← All posts

Terminal & AI CLI: the cheat sheet I keep coming back to


ผมไม่ได้เก่ง terminal ขนาดนั้น แค่ใช้มันบ่อยพอที่จะรู้ว่า — ทุกครั้งที่มือไปหยิบเมาส์ในหน้าต่าง terminal คือสัญญาณว่าผม ลืม อะไรบางอย่างไปอีกแล้ว

โพสต์นี้เลยไม่ใช่ "10 เทคนิค terminal ที่จะเปลี่ยนชีวิตคุณ" มันคือ — โน้ตของผมเอง ที่ผมเปิดดูซ้ำทุกครั้งที่กลับมานั่งหน้าจอแล้วนิ้วเบลอ จดไว้ที่เดียว เปิดง่าย กด Ctrl+F หาเจอ จบ

จุดประสงค์ของบทความนี้คือเขียนให้ตัวเองในอนาคตกลับมาอ่านเป็นหลัก ถ้าคุณอ่านแล้วมีประโยชน์ถือว่าเป็นโบนัส และผมก็จะยินดีมากที่ได้แบ่งปัน 👍


TL;DR — ถ้าจะจำแค่อย่างเดียว

จำ 8 ปุ่มนี้ ก่อน ที่เหลือมาเก็บทีหลังก็ได้

KeyWhat it does
Ctrl+A / Ctrl+Eไปต้นบรรทัด / ท้ายบรรทัด
Ctrl+U / Ctrl+Kลบทุกอย่างก่อน / หลัง cursor
Ctrl+Wลบหนึ่งคำก่อน cursor
Ctrl+Ypaste สิ่งที่เพิ่งลบ (yank)
Ctrl+Rค้นประวัติคำสั่งย้อนหลัง
Ctrl+Lclear หน้าจอ

ลืมเมาส์ไปครับ แค่แปดปุ่มนี้ความเร็วก็เพิ่มขึ้นมาเป็นคนละคนแล้ว

Word-jumping — เพราะ arrow key มันช้า

KeyMove
Option+← / Option+→กระโดดทีละคำ (macOS Terminal/iTerm2)
Alt+B / Alt+Fback / forward หนึ่งคำ (universal)
Ctrl+← / Ctrl+→บางที terminal map ให้แบบนี้ก็มี

ถ้า Option+← ไม่ทำงานบน iTerm2 ให้เข้าไปที่ Preferences → Profiles → Keys → Presets → "Natural Text Editing" จบเรื่องครับ ผมงงอยู่หลายเดือนกว่าจะรู้

Process control — เมื่อ command มันค้าง

KeyAction
Ctrl+Cคิล command ที่กำลังรัน
Ctrl+Dส่ง EOF / ออก shell
Ctrl+Zsuspend (พัก) ไว้ก่อน
fgเอา job ที่ suspend กลับมารันต่อ
bgปล่อยให้รัน background
jobsดูว่ามีอะไรค้างอยู่บ้าง

Ctrl+Z แล้ว fg คือ workflow โปรดของผม — กำลังรัน server อยู่ อยากแก้ไฟล์ config ปุ๊บนึง ก็ Ctrl+Z, vi config.json, แก้, save, fg รันต่อ ไม่ต้องเปิด tab ใหม่

History magic — สิ่งที่ทำให้คุณดูเก่งขึ้น 50%

!!              # รันคำสั่งล่าสุดอีกครั้ง
sudo !!         # โอเค ลืม sudo ใช่มั้ย
!$              # argument สุดท้ายของคำสั่งก่อนหน้า
                # ตัวอย่าง: ls /very/long/path  →  cd !$
!cat            # รันคำสั่ง cat ล่าสุด
^old^new        # รันคำสั่งล่าสุดอีกที แต่แทน old ด้วย new

แล้วก็ Ctrl+R พิมพ์คีย์เวิร์ดบางส่วน → กด Ctrl+R ซ้ำเพื่อหาเก่ากว่าเดิม → กด Enter รัน หรือ Esc เพื่อแก้ก่อนรัน อันนี้ทำให้ผมเลิกพยายามจำคำสั่งยาว ๆ ไปเลย

Directory teleporting

cd -            # กลับไป directory ก่อนหน้า (toggle)
pushd /a/b/c    # เก็บ path นี้ไว้ใน stack แล้วกระโดดไป
popd            # ดึง path บนสุดออกมาใช้
dirs -v         # ดู stack

แต่จริง ๆ ที่ผมใช้บ่อยกว่ามากคือ z plugin (อยู่ในส่วน Oh My Zsh ด้านล่าง) มันจำ directory ที่ผมเข้าบ่อย ๆ แล้วให้ผมพิมพ์แค่ z some-keyword มันจะ teleport ไปให้เอง สมองผมไม่ต้องจำ path ยาว ๆ

iTerm2 — แค่ 6 ปุ่มก็พอ

KeyWhat
Cmd+T / Cmd+Wtab ใหม่ / ปิด tab
Cmd+Dsplit แนวตั้ง
Shift+Cmd+Dsplit แนวนอน
Cmd+Option+←/→/↑/↓สลับ pane
Cmd+;autocomplete จาก history (อันโปรด)
Cmd+Shift+Hpaste history

iTerm2 มี hotkey window ด้วย — ตั้งให้ ⌃ + Space เรียก terminal แบบ Quake ลอยขึ้นมาจากขอบบนได้ Preferences → Keys → Hotkey


Terminal navigation keyboard shortcuts

Infographic ที่ผมให้ NotebookLM สรุปจาก source ทั้งหมด เก็บไว้เป็น ภาพรวมก่อนลงรายละเอียด


Oh My Zsh — ปลั๊กอิน 10 ตัวที่คุ้มที่จะเปิด

ติดตั้งครั้งเดียว ~/.zshrc แค่บรรทัดเดียว:

plugins=(git zsh-autosuggestions zsh-syntax-highlighting z web-search sudo extract history copypath copyfile)

แล้วทำตามนี้ครับ:

Pluginสิ่งที่มันทำ
gitalias สั้น ๆ เพียบ — gst, gco, gp, gl, gc -m "..."
zsh-autosuggestionssuggest คำสั่งจาก history ขณะพิมพ์ กด รับ
zsh-syntax-highlightingคำสั่งถูก = เขียว, ผิด = แดง รู้ก่อน Enter
zz keyword → teleport ไป directory ที่เคยไป
web-searchgoogle "what is rust trait" ค้นใน terminal
sudoกด Esc Esc เพื่อแปะ sudo ข้างหน้าคำสั่ง
extractextract file.tar.gz แตกอะไรก็ได้ ไม่ต้องจำ flag
historyh, hs keyword, hsi (case-insensitive)
copypathcopy path ของ directory ปัจจุบันใส่ clipboard
copyfilecopyfile foo.txt copy เนื้อไฟล์ใส่ clipboard

zsh-autosuggestions กับ zsh-syntax-highlighting ต้องโคลนแยก:

git clone https://github.com/zsh-users/zsh-autosuggestions \
  ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting \
  ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

theme ผมใช้ powerlevel10k มาตลอด เร็วและสวย ตั้งครั้งแรกใช้เวลา 5 นาที แต่ใช้ทุกวันไป 3 ปี — คุ้มมาก

Aliases ที่ผมไม่ยอมอยู่ถ้าไม่มี

# ~/.zshrc
alias zshrc="vi ~/.zshrc"      # เปิดไฟล์ config
alias src="source ~/.zshrc"     # reload shell — แก้แล้วเห็นผลทันที
alias ..="cd .."
alias ...="cd ../.."
alias ll="ls -lhA"
alias g="git"
alias gst="git status -sb"
alias glog="git log --oneline --graph --decorate -20"
alias serve="python3 -m http.server"   # static server เร็ว ๆ
alias myip="curl -s ifconfig.me"

โค้ดจริง ๆ จะมีมากกว่านี้ แต่นี่คือ "ไม่มี ไม่มีชีวิต" tier

Nano ใน 7 ปุ่ม (เผื่อ SSH เข้าเครื่องเก่า)

ส่วนใหญ่ผมใช้ vim แต่บางที SSH เข้า server ที่มีแค่ nano ก็ต้องเอาตัวรอด

KeyAction
Ctrl+Osave (Write Out)
Ctrl+Xexit
Ctrl+Wsearch
Ctrl+\search & replace
Ctrl+Kcut บรรทัด
Ctrl+Upaste บรรทัดที่เพิ่ง cut
Alt+Uundo

แค่นี้พอใช้งานได้ 90% ของกรณี ที่เหลือ Google เอา

Vim survival kit — ขั้นต่ำที่ต้องรอด

vim ตกใจน่ากลัวกว่าที่ควร เพราะคนสอนชอบยัด feature เยอะเกิน นี่คือชุดที่ ใช้เอาตัวรอดได้จริง ๆ

Modes (สำคัญที่สุด):

  • Esc → Normal mode (default, ไว้สั่งงาน)
  • i → Insert mode (พิมพ์ข้อความ)
  • : → Command-line mode (สั่ง save/quit)

Movement (Normal mode):

h j k l         ← ↓ ↑ →
w / b           กระโดดคำหน้า / คำหลัง
0 / $           ต้น / ท้ายบรรทัด
gg / G          ต้น / ท้ายไฟล์
/keyword        search → กด n / N เพื่อ next / previous

Edit (Normal mode):

i / a / o       insert ที่ cursor / หลัง cursor / บรรทัดใหม่ใต้
dd              cut บรรทัด
yy              copy บรรทัด
p               paste
u               undo
Ctrl+R          redo

Save & quit (Command-line):

:w              save
:q              quit
:wq             save + quit
:q!             quit ทิ้ง changes

Text objects — ปุ่มที่ทำให้รู้สึกว่า vim เก่งจริง

ciw             change inner word
diw             delete inner word
ci"             change ข้างใน "..."
ca(             change รวม "(...)"
yi]             yank ข้างใน [...]

ลองนึกภาพ: cursor อยู่ตรงไหนก็ได้ใน "hello world" แล้วกด ci" → มันจะลบ hello world ทิ้งและเข้า insert mode ให้ทันที ไม่ต้องเลือก ไม่ต้อง ลากเมาส์ ไม่ต้องวาง cursor ให้ตรง นี่คือ super power ของ vim


How to use Nano and Vim text editors

สรุปทั้ง nano และ vim ในภาพเดียว — ตอนแรกผมว่าจะวาดเอง แต่ NotebookLM generate ออกมาดีกว่ามือผมเยอะ


AI CLIs — ปี 2026 มีอะไรน่าใช้บ้าง

ผมลองมาแล้วทุกตัวที่ดังในปีนี้ ขอสรุปสั้น ๆ:

Claude Code — ตัวหลักของผม

npm install -g @anthropic-ai/claude-code
claude        # ใน repo ของคุณ

ดีตรง: อ่าน codebase ทั้งโปรเจกต์ได้, รัน terminal command ได้เอง, แก้ หลายไฟล์พร้อมกัน, มี Agent SDK สำหรับสร้าง custom agent เป็นของตัวเอง (ที่ผมใช้สร้าง pipeline เล็ก ๆ ในบ้าน)

ใช้บ่อยที่สุดเวลา: refactor ข้ามไฟล์, อ่าน error stack แล้วให้มันเดาก่อน, เขียน test จาก behavior ที่อธิบายเป็นภาษาคน

Codex CLI — ตัวเลือกฝั่ง OpenAI

ราคาคุ้ม ใช้ ChatGPT plan ได้เลยถ้ามีอยู่แล้ว เหมาะกับงาน prototyping และทดลอง feature ใหม่ ๆ ที่ไม่ต้องอ่าน context เยอะ

Gemini CLI — ตัวฟรีที่ผมใช้จริง

npm install -g @google/gemini-cli
gemini        # login ครั้งแรกด้วย Google account

ดีตรง: ฟรี สำหรับใช้งานส่วนตัว (ล็อกอินด้วย Google account ปกติได้ quota ใจดีมาก), ใช้ Gemini 2.5 Pro เป็น default, รองรับ MCP เหมือน Claude Code, search Google ได้ในตัว, อ่าน/แก้ไฟล์ + รัน shell command ได้เอง

ผมใช้บ่อยตอน: งานที่ไม่อยากเปลือง quota Claude, prototype ไอเดียเร็ว ๆ, หรือเวลาอยากให้มันค้น web มาประกอบบริบทก่อนเขียนโค้ด — gemini -p "..." ใช้ใน script ได้เลย ไม่ต้องเปิด interactive

OpenCode — สาย open-source

รองรับ provider เกือบทุกเจ้า (Anthropic, OpenAI, Google, local Ollama) ปรับแต่งได้ทุกซอกทุกมุม ถ้าคุณอยู่สาย hardcore ที่อยาก self-host หรือ สลับ model ตาม mood นี่คือคำตอบ


เลือกยังไงดี? ถ้าทำงานจริงทุกวัน — Claude Code

ถ้าอยากประหยัดและมี ChatGPT plan อยู่แล้ว — Codex CLI

ถ้าอยาก free + quota ใจดี — Gemini CLI

ถ้าอยากคุมทุกอย่างเอง — OpenCode

Combo moves — ที่ผมใช้จริงทุกวัน

The "ลืม sudo" combo:

apt install foo     # zsh: command not found หรือ permission denied
sudo !!             # หรือกด Esc Esc ถ้าใช้ sudo plugin

The "แก้ไฟล์เร็ว ๆ" combo:

# กำลังรัน server อยู่ใน foreground
# Ctrl+Z          → suspend
vi .env           # แก้
# :wq             → save & quit
fg                # รัน server ต่อ

The "AI + grep" combo:

docker logs my-app 2>&1 | tail -200 > /tmp/log.txt
claude "อ่าน /tmp/log.txt แล้วบอกผมว่า error จริง ๆ คืออะไร"

The "teleport + AI" combo:

z my-project       # z plugin teleport
claude             # เปิด Claude Code ใน repo
# > "เพิ่ม endpoint /health แบบ test ครบ"

Mind map — ภาพรวมทั้งหมดในที่เดียว

ถ้ายังจำไม่ไหว นี่คือโครงทั้งหมดของโพสต์นี้แบบย่อ ๆ ไว้กลับมาดู:

  • Zsh / Productivity
    • autosuggestions, syntax-highlighting
    • history expansion (!!, !$, sudo !!)
    • directory teleport (cd -, z, pushd/popd)
  • Oh My Zsh framework
    • install: curl/wget → ตั้งค่าใน ~/.zshrc
    • theme: agnoster, powerlevel10k
    • plugins: git, sudo, extract, copypath, ...
  • Line editing & navigation
    • ZLE keymaps (Emacs default / Vi)
    • Ctrl+A/E, Ctrl+U/K/W/Y, Ctrl+R, Ctrl+L
  • Editors
    • Nano: Ctrl+O save, Ctrl+X exit, Ctrl+W search
    • Vim: modes, hjkl, dd/yy/p, text objects (ciw, ci")
  • Agentic Coding
    • Claude Code (+ Agent SDK)
    • Codex CLI / Gemini CLI / OpenCode

ส่งท้าย

โพสต์นี้คือ snapshot ของสิ่งที่ผมใช้ ณ วันที่ 2026-05-02 — เครื่องมือพวกนี้ เปลี่ยนเร็วมาก โดยเฉพาะฝั่ง AI CLI ผมจะกลับมา แก้ไฟล์นี้ (ไม่ใช่เขียนโพสต์ใหม่) เมื่อมีอะไรเปลี่ยน เพราะมันคือ reference ของผมเอง ไม่ใช่ time capsule

ครั้งหน้าที่นั่งหน้าจอแล้วนิ้วเบลอ ๆ กลับมาเปิดหน้านี้ กด Ctrl+F หาในสิ่งที่ลืม ใช้ภายใน 10 วินาที จบ นั่นคือสิ่งที่ผมตั้งใจให้โพสต์นี้เป็น

j ↑ k ↓