Bỏ qua để đến nội dung

Cấu hình terminal

Bài viết được dịch tự động từ bài viết gốc, chưa được kiểm tra lại bởi con người. Chỉ những bài viết có dấu tick xanh cạnh tiêu đề là đã được kiểm tra.

Claude Code hoạt động trong mọi terminal mà không cần cấu hình. Trang này dành cho khi có gì đó cụ thể không hoạt động như bạn mong đợi. Tìm triệu chứng của bạn bên dưới. Nếu mọi thứ đã ổn, bạn không cần đọc trang này.

Trang này nói về việc khiến terminal gửi đúng tín hiệu đến Claude Code. Để đổi phím Claude Code phản hồi, xem keybindings thay vào đây.

Nhấn Enter để submit tin nhắn. Để xuống dòng mà không submit, nhấn Ctrl+J, hoặc gõ \ rồi Enter. Cả hai hoạt động ở mọi terminal không cần setup.

Ở hầu hết terminal bạn cũng có thể nhấn Shift+Enter, nhưng hỗ trợ khác nhau theo terminal emulator:

TerminalShift+Enter xuống dòng
Ghostty, Kitty, iTerm2, WezTerm, Warp, Apple Terminal, Windows TerminalHoạt động không cần setup
VS Code, Cursor, Devin Desktop, Alacritty, ZedChạy /terminal-setup một lần
gnome-terminal, IDE JetBrains như PyCharm, Android StudioKhông có; dùng Ctrl+J hoặc \ rồi Enter

Với VS Code, Cursor, Devin Desktop, Alacritty, và Zed, /terminal-setup ghi Shift+Enter và các keybinding khác vào file cấu hình terminal. Lần chạy đầu bạn thấy xác nhận như Installed VSCode terminal Shift+Enter key binding. Chạy /terminal-setup trực tiếp trong terminal host thay vì trong tmux hoặc screen, vì nó cần ghi vào cấu hình terminal host.

Trong VS Code, Cursor, và Devin Desktop, /terminal-setup cũng cập nhật hai setting editor: đặt terminal.integrated.gpuAcceleration thành "off" để tránh chữ vỡ trong integrated terminal, và đặt terminal.integrated.mouseWheelScrollSensitivity để cuộn mượt hơn trong fullscreen mode.

Nếu bạn đang chạy trong tmux, Shift+Enter cũng cần cấu hình tmux bên dưới kể cả khi terminal ngoài đã hỗ trợ.

Một số shortcut Claude Code dùng phím Option, ví dụ Option+Enter để xuống dòng hoặc Option+P để đổi model. Trên macOS, hầu hết terminal không gửi Option như modifier mặc định, nên các shortcut này không hoạt động cho đến khi bạn bật. Setting terminal cho việc này thường gọi là “Use Option as Meta Key”.

Apple Terminal: Settings → Profiles → Keyboard, tick “Use Option as Meta Key”. Nếu bạn đồng ý prompt setup terminal lần đầu của Claude Code, việc này đã tự làm.

iTerm2: Settings → Profiles → Keys → General, đặt Left/Right Option key thành “Esc+”.

VS Code: Thêm "terminal.integrated.macOptionIsMeta": true vào settings VS Code.

Khi Claude xong task hoặc dừng chờ permission prompt, nó phát ra notification event. Hiện thứ này như terminal bell hoặc desktop notification giúp bạn chuyển sang việc khác trong khi task dài chạy.

Mặc định Claude Code gửi desktop notification chỉ trong Ghostty, Kitty, iTerm2. Ở terminal khác, đặt preferredNotifChannel thành "terminal_bell" để dùng terminal bell:

{
"preferredNotifChannel": "terminal_bell"
}

Ở mọi terminal, bạn có thể cấu hình Notification hook để phát âm thanh hoặc chạy lệnh tuỳ chỉnh khi Claude cần bạn chú ý:

{
"hooks": {
"Notification": [
{
"hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff" }]
}
]
}
}

Khi Claude Code chạy trong tmux, hai thứ mặc định bị hỏng: Shift+Enter submit thay vì xuống dòng, và desktop notification/progress bar không bao giờ đến terminal ngoài. Thêm các dòng sau vào ~/.tmux.conf, rồi chạy tmux source-file ~/.tmux.conf:

Terminal window
set -g allow-passthrough on
set -s extended-keys on
set -as terminal-features 'xterm*:extkeys'

Dùng lệnh /theme, hoặc theme picker trong /config, để chọn theme Claude Code khớp terminal của bạn. Chọn auto sẽ tự phát hiện nền sáng/tối của terminal, nên theme theo đúng thay đổi appearance OS mỗi khi terminal của bạn thay đổi.

Ngoài các preset có sẵn, /theme còn liệt kê mọi custom theme bạn đã định nghĩa và theme do plugin đã cài đóng góp. Chọn New custom theme… ở cuối danh sách để tạo tương tác: đặt tên theme, rồi chọn từng color token để override. Nhấn Ctrl+E khi một custom theme đang được highlight để sửa nó.

Mỗi custom theme là một file JSON trong ~/.claude/themes/. Tên file (không kèm .json) là slug của theme, và chọn theme sẽ lưu custom:<slug> làm theme preference. Claude Code theo dõi ~/.claude/themes/ và tự reload khi một file được thêm/sửa, nên chỉnh sửa trong editor có hiệu lực ngay ở một session đang chạy mà không cần restart. Nếu thư mục ~/.claude/themes/ chưa tồn tại lúc Claude Code khởi động, restart một lần sau khi tạo file theme đầu tiên; sau đó thay đổi áp dụng không cần restart nữa.

~/.claude/themes/dracula.json
{
"name": "Dracula",
"base": "dark",
"overrides": {
"claude": "#bd93f9",
"error": "#ff5555",
"success": "#50fa7b"
}
}

Nếu display nhấp nháy hoặc vị trí scroll nhảy trong khi Claude đang làm việc, chuyển sang fullscreen rendering mode. Chạy /tui fullscreen để chuyển và lưu preference.

Khi bạn paste hơn 800 ký tự hoặc hơn hai dòng vào prompt, Claude Code thu gọn input thành placeholder như [Pasted text #1 +120 lines] để ô input dễ dùng. Nội dung đầy đủ vẫn được gửi đến Claude khi bạn submit.

Claude Code giữ nội dung đã thu gọn trong ~/.claude/paste-cache/, nên khi bạn gọi lại một prompt cũ từ command history và submit lại, Claude Code gửi lại đúng nội dung paste đầy đủ, kể cả ở một session sau này - cho tới khi retention sweep xoá cache file đó.

Claude Code xoá cache file cũ hơn cleanupPeriodDays, theo quy tắc retention sweep, nên một prompt gọi lại có thể tham chiếu tới text đã paste nhưng không còn tồn tại. Khi bạn submit một prompt như vậy, Claude Code không bao giờ gửi literal chuỗi [Pasted text #N], và hiện thông báo nêu rõ phần paste bị thiếu:

  • Trong một prompt thường còn text khác, Claude Code xoá placeholder và gửi phần text còn lại.
  • Trong lệnh shell mode (!lệnh) hoặc lệnh /, nơi việc xoá sẽ đổi lệnh thực thi, và với bất kỳ prompt nào việc xoá làm trống hẳn, Claude Code huỷ việc submit và giữ nguyên text gốc trong ô input, kèm placeholder. Xoá placeholder hoặc sửa lệnh, rồi submit lại.

VS Code integrated terminal có thể làm rớt ký tự từ những đoạn paste rất lớn trước khi chúng đến Claude Code - ưu tiên workflow dựa trên file ở đó. Với input rất lớn như cả file hoặc log dài, ghi nội dung ra file và nhờ Claude đọc thay vì paste - cách này giữ transcript hội thoại dễ đọc và để Claude tham chiếu file bằng path ở các lượt sau.

Claude Code có chế độ soạn thảo kiểu Vim cho prompt input. Bật qua /config → Editor mode, hoặc đặt editorMode thành "vim" trong ~/.claude/settings.json.

Vim mode hỗ trợ tập con motion và operator NORMAL/VISUAL mode, như điều hướng hjkl, chọn v/V, và d/c/y với text object.