jvinhit//lab

Search posts

Type to search across journal entries.

↑ ↓ navigate ↵ open esc close

Claude Code từ zero đến thành thạo · Phần 5 — Interactive mode và CLI reference

Bàn phím là giao diện chính của Claude Code: phím tắt theo nhóm, vim mode, shell mode với dấu !, xếp hàng tin nhắn, chạy nền, /btw, và bảng tra cứu lệnh cùng flag của CLI.

Chặng nền tảng xong rồi. Từ đây là chặng vận hành hằng ngày — bắt đầu bằng thứ bạn chạm vào nhiều nhất mà ít khi đọc kỹ: bàn phím.

Phần lớn người dùng Claude Code chỉ biết Enter, Esc và Shift+Tab. Bài này là bảng tra cứu đầy đủ, kèm bốn cơ chế mà nếu không biết bạn sẽ làm việc chậm hơn hẳn: shell mode, xếp hàng tin nhắn, chạy nền, và /btw.

Phím tắt có thể khác nhau tuỳ platform và terminal. Trên macOS, các phím dùng Option/Alt (Alt+B, Alt+F, Alt+Y, Alt+P) cần bạn cấu hình Option thành Meta trong terminal thì mới chạy.

Phím tắt

Điều khiển chung

PhímTác dụng
Ctrl+CNgắt, hoặc xoá ô nhập
Ctrl+DThoát phiên Claude Code
Ctrl+G hoặc Ctrl+X Ctrl+EMở trong text editor mặc định
Ctrl+LVẽ lại màn hình
Ctrl+OBật/tắt transcript viewer
Ctrl+RTìm ngược trong lịch sử lệnh
Ctrl+BĐẩy task đang chạy xuống nền
Ctrl+TBật/tắt checklist task của Claude
Ctrl+SCất tạm hoặc lấy lại prompt đang gõ
Ctrl+ZTạm dừng Claude Code
Ctrl+X Ctrl+KDừng mọi background subagent đang chạy
EscNgắt Claude, hoặc đóng hộp thoại
Esc EscXoá bản nháp đang gõ, hoặc rewind
Shift+TabXoay vòng permission mode
Option+P / Alt+PĐổi model
Option+T / Alt+TBật/tắt extended thinking
Option+O / Alt+OBật/tắt fast mode
Ctrl+V, hoặc Cmd+V trên iTerm2, hoặc Alt+V trên Windows và WSLDán ảnh từ clipboard

Sửa văn bản

Bộ phím này theo chuẩn readline, giống bash và zsh:

PhímTác dụng
Ctrl+AVề đầu dòng
Ctrl+EVề cuối dòng
Ctrl+KXoá tới cuối dòng
Ctrl+UXoá từ con trỏ về đầu dòng
Ctrl+WXoá từ trước đó
Ctrl+YDán lại phần vừa xoá
Alt+Y (sau Ctrl+Y)Xoay vòng lịch sử dán
Alt+B / Alt+FLùi/tiến một từ
Ctrl+_ hoặc Ctrl+Shift+-Hoàn tác lần sửa gần nhất

Ký tự mở đầu

Bốn ký tự này gõ ở đầu ô nhập sẽ đổi hẳn chế độ:

Ký tựMở ra
/Command hoặc skill
!Shell mode
@Nhắc tới đường dẫn file
:Emoji shortcode
? khi ô nhập rỗngBật/tắt bảng trợ giúp phím tắt

Transcript viewer

Bấm Ctrl+O để mở. Bên trong:

PhímTác dụng
{ / }Nhảy tới prompt trước/sau của bạn, như motion đoạn văn của vim
[Ghi toàn bộ hội thoại ra scrollback gốc của terminal
vGhi hội thoại ra file tạm rồi mở bằng $VISUAL hoặc $EDITOR
q, Ctrl+C, EscThoát

Vim mode

Claude Code có vim mode thật cho ô nhập. Esc vào NORMAL mode, i/I/a/A/o/O quay lại INSERT.

Trong NORMAL mode bạn có đủ bộ cơ bản: h j k l di chuyển, w e b theo từ, 0 $ ^ theo dòng, gg G đầu/cuối input, f{char} F{char} t{char} T{char} nhảy tới ký tự (kèm ; và , để lặp lại), x xoá ký tự, dd xoá dòng. Visual mode có v (theo ký tự) và V (theo dòng).

Một tiện lợi riêng: gõ / trong NORMAL mode mở tìm ngược lịch sử, y hệt Ctrl+R.

Lịch sử lệnh

Claude Code lưu lịch sử prompt bạn gõ, và mũi tên lên với tới cả prompt của các phiên trước trong cùng project.

  • Lịch sử lưu theo thư mục làm việc.
  • Chạy /clear mở phiên mới: recall liệt kê prompt của phiên mới trước, prompt phiên cũ sau. Hội thoại cũ vẫn còn và resume được.
  • Gửi cùng một prompt hai lần liên tiếp chỉ ghi một mục lịch sử.
  • Khi bạn recall một prompt có kèm văn bản dán, Claude Code gửi lại toàn bộ nội dung dán đó.
  • History expansion bằng ! bị tắt mặc định.

Tìm ngược bằng Ctrl+R: bấm để bật, gõ để tìm, bấm Ctrl+R tiếp để duyệt các kết quả cũ hơn. Tab hoặc Esc nhận kết quả và tiếp tục sửa; Enter nhận và chạy luôn; Ctrl+C huỷ và khôi phục ô nhập ban đầu. Bản inline luôn tìm trong prompt của mọi project.


Shell mode: chạy lệnh không qua Claude

Gõ ! ở đầu để chạy lệnh shell trực tiếp:

! npm test
! git status
! ls -la

Shell mode:

  • Thêm lệnh và output vào context của hội thoại
  • Hiện tiến trình và output theo thời gian thực
  • Hỗ trợ Ctrl+B để đẩy xuống nền như bình thường
  • Không cần Claude diễn giải hay phê duyệt lệnh
  • Tự hoàn thành theo lịch sử: gõ một phần lệnh rồi Tab
  • Tự hoàn thành đường dẫn file: gõ một token có dấu /, ví dụ ./src/ hay ~/, rồi Tab. Trên Windows cũng dùng dấu gạch chéo xuôi — dropdown kích hoạt bởi /, không phải \
  • Thoát bằng Escape, Backspace, hoặc Ctrl+U khi ô nhập rỗng

Điểm đáng chú ý: Claude tự phản hồi output của lệnh ngay khi nó vào transcript. Nghĩa là bạn chạy ! npm test và nhận được giải thích về các test fail mà không cần prompt thứ hai. Lượt phản hồi đó tốn đúng bằng một prompt thường. Muốn quay lại hành vi cũ — output vào context nhưng không kèm phản hồi — thì đặt respondToBashCommands thành false trong settings.json.

Chạy lệnh Bash ở nền

Claude Code chạy được lệnh Bash ở nền để bạn làm việc tiếp trong lúc tiến trình dài chạy. Hai cách: bảo Claude chạy lệnh ở nền, hoặc bấm Ctrl+B để đẩy một lệnh Bash đang chạy xuống nền. Người dùng tmux phải bấm Ctrl+B hai lần vì nó trùng prefix key của tmux.

Những điều cần biết:

  • Output ghi ra file, Claude đọc lại bằng tool Read
  • Mỗi background task có ID riêng để theo dõi và lấy output
  • Task nền tự dọn khi Claude Code thoát. Nhưng nếu bạn đẩy cả phiên xuống nền thay vì thoát, chúng được bàn giao cho background session và tiếp tục chạy
  • Task bị kết thúc tự động nếu output vượt 5GB, kèm ghi chú trong stderr
  • Trên macOS và Linux, Claude Code kết thúc task nền khi hệ điều hành báo áp lực bộ nhớ, với điều kiện phiên đã idle ít nhất 30 phút và không có lượt chạy hay subagent nào đang hoạt động

Lệnh hay được đẩy xuống nền: build tool (webpack, vite, make), package manager, test runner (jest, pytest), dev server, và tiến trình dài như docker hay terraform.

Tắt hẳn tính năng task nền: đặt biến môi trường CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1.

Xếp hàng tin nhắn khi Claude đang làm

Gõ một tin nhắn và bấm Enter trong lúc Claude đang chạy — Claude Code xếp hàng nó thay vì cắt ngang lượt hiện tại, và liệt kê các mục đang chờ ngay trên ô nhập.

Thời điểm một mục xếp hàng tới tay Claude phụ thuộc bạn xếp cái gì:

  • Tin nhắn — nếu bạn xếp hàng trong lúc Claude đang chạy tool call, Claude Code chuyển nó cho Claude ngay khi các tool call đó xong, trong cùng lượt. Khi lượt kết thúc, các tin nhắn còn lại được gửi thành lượt kế tiếp, mỗi cái một tin nhắn riêng.
  • Command và shell command — Claude Code giữ lại tới khi lượt kết thúc, rồi chạy từng cái một.

Bấm Esc để cắt ngang lượt thay vì chờ; Claude Code giữ nguyên thứ bạn đã xếp hàng và gửi ngay.

Lấy lại thứ đã xếp hàng: bấm Up từ dòng đầu của ô nhập. Claude Code gỡ chúng khỏi hàng đợi và đặt vào ô nhập, mỗi mục một dòng.

/btw — hỏi bên lề, không làm bẩn hội thoại

/btw cho bạn hỏi một câu về công việc hiện tại mà không thêm gì vào lịch sử hội thoại.

/btw what was the name of that config file again?

Claude trả lời từ những gì đã có trong context: tin nhắn của bạn, phản hồi của nó, và kết quả tool nó đã thu thập. Bốn tính chất quan trọng:

  • Dùng được cả khi Claude đang chạy — câu hỏi bên lề chạy độc lập, không cắt ngang lượt chính.
  • Không có tool — nó chỉ trả lời từ thứ đã có trong context. Không đọc file, không chạy lệnh, không tìm kiếm.
  • Một phản hồi duy nhất — không có lượt tiếp theo trong overlay. Muốn tiếp thì hỏi /btw lần nữa, hoặc bấm f để fork câu hỏi và câu trả lời thành một phiên riêng có đầy đủ tool.
  • Rẻ — khi prompt cache còn ấm, một câu hỏi bên lề gần như chỉ tốn phần câu trả lời.

Trong overlay: Space/Enter/Escape đóng, Up/Down cuộn, Left/Right chuyển giữa các câu trả lời cũ, c copy dưới dạng Markdown thô, f fork thành phiên mới, x xoá danh sách các lần hỏi trước.

Cách nhớ vai trò: /btw là mặt ngược của subagent. /btw thấy toàn bộ hội thoại của bạn nhưng không có tool; subagent có đủ tool nhưng bắt đầu với context rỗng. Dùng /btw để hỏi về thứ Claude đã biết trong phiên này; dùng subagent để đi tìm hiểu thứ mới.

Session recap

Khi bạn quay lại terminal sau lúc rời đi, Claude Code hiện một dòng tóm tắt chuyện đã xảy ra trong phiên. Bản recap được tạo ở nền khi đã qua ít nhất ba phút kể từ lượt cuối và cửa sổ terminal đang không được focus. Nó chỉ xuất hiện khi phiên có ít nhất ba lượt, và không bao giờ hiện hai lần liên tiếp.

Chạy /recap để tạo tóm tắt theo yêu cầu. Tắt recap tự động trong /config, mục Session recap.


CLI reference: lệnh

LệnhTác dụng
claudeVào phiên tương tác
claude "query"Vào phiên tương tác kèm prompt đầu tiên
claude -p "query"Truy vấn rồi thoát
claude -cTiếp tục hội thoại gần nhất trong thư mục hiện tại
claude -r "<session>" "query"Resume phiên theo ID hoặc tên
claude updateCập nhật lên bản mới nhất
claude install [version]Cài hoặc cài lại native binary
claude auth login / logout / statusQuản lý đăng nhập
claude agentsMở agent view để theo dõi và điều phối background session
claude attach <id>Gắn vào một background session trong terminal này
claude logs <id>In output gần đây của một background session
claude stop <id>Dừng một background session (còn có claude kill)
claude respawn <id>Khởi động lại background session, giữ nguyên hội thoại
claude rm <id>Gỡ background session khỏi danh sách
claude doctorIn chẩn đoán cài đặt và settings, chỉ đọc
claude mcpCấu hình MCP server
claude pluginQuản lý plugin
claude project purge [path]Xoá toàn bộ state local của một project
claude setup-tokenSinh OAuth token dài hạn cho CI và script
claude remote-controlBật Remote Control để điều khiển từ claude.ai
claude import [codex|gemini]Mang cấu hình từ coding agent khác sang
claude ultrareview [target]Chạy ultrareview không tương tác

Ống dẫn cũng hoạt động: cat file | claude -p "query".

CLI reference: flag đáng nhớ

Danh sách flag rất dài. Đây là nhóm bạn thực sự sẽ dùng:

FlagTác dụng
--add-dirThêm thư mục làm việc để Claude đọc và sửa file
--modelĐặt model cho phiên, bằng alias hoặc tên đầy đủ
--effortĐặt effort level cho phiên
--permission-modeKhởi động ở permission mode chỉ định
--continue, -cNạp hội thoại gần nhất trong thư mục hiện tại
--resume, -rResume phiên theo ID/tên, hoặc mở picker
--fork-sessionKhi resume, tạo session ID mới thay vì dùng lại cái cũ
--name, -nĐặt tên hiển thị cho phiên
--print, -pIn phản hồi, không vào chế độ tương tác
--output-formatĐịnh dạng output cho print mode
--append-system-promptNối thêm văn bản vào cuối system prompt mặc định
--settingsĐường dẫn file settings JSON, hoặc chuỗi JSON inline
--mcp-configNạp MCP server từ file JSON hoặc chuỗi
--bg, --backgroundChạy phiên như background agent rồi trả điều khiển ngay
--cloudTạo phiên web mới trên claude.ai
--teleportResume một phiên web ngay trong terminal local
--chromeBật tích hợp Chrome cho tự động hoá và test web

Ba flag dành cho lúc có sự cố cấu hình — nhớ chúng sẽ tiết kiệm cho bạn cả buổi debug:

  • --safe-mode — khởi động với mọi tuỳ biến bị tắt, để xem vấn đề có đến từ cấu hình của bạn không.
  • --bare — chế độ tối thiểu: bỏ qua tự động phát hiện hook, skill, plugin, MCP server, auto memory và CLAUDE.md.
  • --debug — bật debug mode, lọc được theo nhóm: claude --debug='mcp,startup'.

Và ba flag chỉ dùng ở print mode, hữu ích khi chạy trong script hoặc CI:

  • --max-turns — giới hạn số lượt agentic
  • --max-budget-usd — giới hạn số tiền chi cho API call trước khi dừng
  • --json-schema — nhận output JSON đã validate theo JSON Schema

Phần 19 sẽ dùng lại nhóm flag này khi nói về headless mode.

Nguồn

Docs gốc cập nhật thường xuyên; khi có mâu thuẫn, tin bản tiếng Anh.