Sửa lỗi gõ tiếng Việt (Telex, Unikey) trong Claude Code
Gõ Telex bằng Unikey, EVKey hay OpenKey vào Claude Code bị mất dấu hoặc lặp chữ, còn dán vào thì đúng. Nguyên nhân theo các báo cáo, cách dùng Ctrl+G và cách tự kiểm tra lại.
Lỗi gõ tiếng Việt Telex trong Claude Code trông như thế nào?
Lỗi gõ tiếng Việt Telex trong Claude Code xảy ra khi bạn dùng Unikey, EVKey hoặc OpenKey để gõ thẳng vào ô prompt: dấu bị mất, hoặc chữ bị lặp. Cách vòng qua lỗi có trong tài liệu chính thức là nhấn Ctrl+G để mở prompt trong trình soạn thảo văn bản, gõ tiếng Việt ở đó, rồi lưu và đóng file. Tính đến ngày 18/10/2026, chúng tôi chưa thấy Anthropic công bố bản sửa nào nhắc tên tiếng Việt hay Telex, nên bạn nên tự kiểm tra lại sau mỗi lần cập nhật.
Triệu chứng thường gặp: bạn gõ xin chaof theo kiểu Telex và mong thấy “xin chào”. Màn hình lại hiện “xin chaào”. Một người dùng mô tả đúng ví dụ này trong bình luận ngày 18/3/2026 ở issue #7989 trên GitHub của Claude Code (Windows 11 Pro, Unikey/EVKey, Claude Code CLI). Người đó cũng ghi rằng copy rồi dán thì chữ ra đúng. Một báo cáo khác, issue #33891, cho ví dụ “tiếng” biến thành “tieêếng”.
Điểm quan trọng nhất để chẩn đoán là sự khác nhau giữa gõ và dán. Nếu dán cùng một câu vào prompt mà chữ hiện đúng, thì font, bảng mã Unicode và terminal của bạn đều không có lỗi. Lỗi nằm ở cách ô nhập của Claude Code nhận chuỗi phím mà bộ gõ gửi tới.
Vì sao Claude Code làm mất dấu khi gõ bằng Unikey?
Hãy xem cách Unikey làm việc. Khi bạn gõ a rồi f, Unikey không gửi một chữ “à” duy nhất. Theo bình luận của tvtdev94 trong #7989 (ngày 13/3/2026, thử với Unikey Telex trên Windows 11 và Claude Code v2.1.74), các bộ gõ Unikey, OpenKey và EVKey gửi một phím xóa lùi (backspace) để xóa chữ “a” vừa gõ, rồi gửi chữ thay thế “à”. Đó là hai sự kiện tách rời. Với một từ dài như “tiếng”, bộ gõ có thể gửi vài phím xóa lùi liên tiếp rất nhanh.
Người bình luận đó cho rằng ô nhập của Claude Code xử lý các sự kiện này dựa trên trạng thái cũ, nên trong vài phím xóa lùi liền nhau chỉ có một phím có tác dụng. Chữ cũ không bị xóa hết, chữ mới vẫn được chèn vào, và bạn thấy “chaào”. Đây là chẩn đoán của cộng đồng. Chưa có maintainer nào của Anthropic xác nhận nó.
Hai báo cáo khác đưa ra một cơ chế cụ thể hơn. Issue #33891 (mở ngày 13/3/2026, Claude Code 2.1.74 cài qua npm, Windows 11, Windows Terminal) viết rằng bộ xử lý TextInput chỉ nhận \x7F (ký tự DEL, mã 0x7F) là phím xóa lùi từ bộ gõ, vì đó là ký tự macOS và Linux dùng. Trên Windows, bộ gõ lại gửi \x08 (ký tự BS, mã 0x08). Issue #39689 (mở ngày 27/3/2026, Claude Code 2.1.81, Windows, Unikey Telex) nói điều tương tự: một số bộ gõ trên Windows gửi 0x08 ở chỗ bộ gõ macOS và Linux gửi 0x7F. Cả hai đều là nhận định của người báo lỗi, không phải của Anthropic.
Đừng coi đây là lỗi chỉ có trên Windows. Issue #30240 báo lỗi trên macOS với Claude Code v2.1.63 và Terminal.app. Người viết #39689 cũng nói macOS và Linux bị ảnh hưởng. README của bản vá tvtdev94 lại đưa ra một nguyên nhân khác nữa: Unikey, OpenKey và EVKey nhúng ký tự \x7f vào chuỗi nhập. Các giải thích không khớp nhau hoàn toàn. Điều chắc chắn là triệu chứng, còn cơ chế thì chưa ai xác nhận.
Anthropic đã sửa lỗi gõ tiếng Việt chưa? Tình trạng ngày 18/10/2026
Câu trả lời ngắn: chưa rõ. Đây là những gì chúng tôi đọc được trên các trang gốc ngày 18/10/2026. Những chỗ ghi ngày 20/10/2026 là phần chúng tôi đã đọc lại vào ngày đó.
- Issue #7989 “[BUG] error typing Vietnamese telex” được mở ngày 21/9/2025 với Claude Code 1.0.120 trên Windows 11. Bot github-actions đóng nó với lý do “not planned” (không lên kế hoạch) ngày 24/5/2026 vì lâu không có hoạt động, rồi khóa thread ngày 15/7/2026. Trang không hiện câu trả lời nào của maintainer, dù có vài bình luận bị ẩn sau nút “Load more”.
- Issue #33891 bị bot đóng là bản trùng (duplicate) của #7989 ngày 16/3/2026. Issue #39689 bị đóng tương tự ngày 30/3/2026. Không có maintainer trả lời trong cả hai.
- Các issue #30240, #31870, #19464 và #10429 cũng bị bot đóng là bản trùng hoặc vì không có hoạt động.
- Issue #22853 (mất ký tự khi gõ tiếng Việt, Trung, Nhật, Hàn trên Windows 11 với Unikey Telex) được tài khoản cirospaciari đóng là “completed” ngày 6/2/2026, kèm câu “This has been fixed”. Bình luận đó không nêu phiên bản, commit hay pull request nào. Sau ngày đó vẫn có báo cáo lỗi mới ở v2.1.71, v2.1.74 và v2.1.81.
- README của dự án 0x0a0d/fix-vietnamese-claude-code nói Anthropic đã sửa việc gõ tiếng Việt từ v2.1.108. Đây là nhận định của bên thứ ba. Chúng tôi đã đọc các mục v2.1.108 trong CHANGELOG.md chính thức và không thấy mục nào về tiếng Việt hay IME (input method editor, tức bộ gõ).
- CHANGELOG.md có các mục sửa IME cho tiếng Trung, Nhật, Hàn (CJK), ví dụ v2.1.84 ghi “IME composition (CJK input) now renders inline”. Mục v2.1.292 sửa lỗi “input-method text and decomposed accents being dropped while a prompt footer row was selected”, tức là chỉ khi đang chọn một dòng ở chân prompt. Đó không phải lỗi xóa lùi của Telex. Chúng tôi không tìm thấy mục nào nhắc Vietnamese, Telex, Unikey, OpenKey hay EVKey. Ngày 20/10/2026, phiên bản mới nhất trong changelog là 2.1.304, được trang Releases ghi phát hành ngày 19/10/2026. Các mục của 2.1.303 (ngày 18/10/2026, chỉ ghi “Bug fixes and reliability improvements”) và 2.1.304 cũng không nhắc tiếng Việt hay IME.
- Issue #85238 (mở ngày 9/8/2026, v2.1.220, UniKey 4.3 RC5) cho thấy có người vẫn gõ tiếng Việt bằng UniKey ở phiên bản đó. Nhưng lỗi được báo là con trỏ bàn phím nhảy sang một cửa sổ Claude Code khác, không phải lỗi mất dấu. Trang không nói dấu ra đúng hay sai.
Khi tra mục lục llms.txt của trang tài liệu Claude Code ngày 18/10/2026, chúng tôi cũng không tìm thấy trang nào nói về tiếng Việt, Telex hay IME. Vì vậy, kết quả chạy thử trên máy bạn mới là câu trả lời đáng tin. Cách kiểm tra nằm ở cuối bài.
Cách 1: dùng Ctrl+G để gõ tiếng Việt trong trình soạn thảo
Trang Interactive mode của tài liệu Claude Code ghi rằng Ctrl+G hoặc Ctrl+X Ctrl+E mở prompt trong trình soạn thảo văn bản mặc định, để bạn sửa prompt ở đó. Ctrl+X Ctrl+E là tổ hợp phím quen thuộc của readline (thư viện nhập dòng lệnh mà bash dùng), được thêm làm phím thay thế từ bản 2.1.83. Ctrl+G có từ bản 2.0.10. Hành động này tên là chat:externalEditor, nên bạn có thể gán nó sang phím khác trong keybindings.json.
Cách làm:
- Mở Claude Code như bình thường bằng lệnh
claude. - Nhấn
Ctrl+G. Một trình soạn thảo mở ra với nội dung prompt hiện tại. - Bật Unikey, EVKey hoặc OpenKey và gõ prompt tiếng Việt, ví dụ “hãy sửa code trong file main.go”.
- Lưu file và đóng trình soạn thảo.
- Quay lại Claude Code. Đọc lại nội dung trong ô prompt trước khi nhấn Enter.
Vì sao cách này có thể tránh được lỗi: các phím bạn gõ đi vào trình soạn thảo, không đi qua ô nhập của Claude Code. Claude Code chỉ đọc lại văn bản đã hoàn chỉnh, giống như khi bạn dán. Tuy vậy, tài liệu của Anthropic không nói gì về bộ gõ tiếng Việt trong trình soạn thảo. Hãy tự gõ thử “xin chào” và “tiếng Việt” trong trình soạn thảo bạn chọn trước khi tin vào nó. Nếu trình soạn thảo chạy ngay trong terminal (như nano hoặc vim), nó tự nhận phím từ bộ gõ, nên cũng cần thử riêng.
Ctrl+G mở trình soạn thảo nào? Đặt VISUAL và EDITOR
Trong issue #18990, maintainer bcherny viết ngày 17/8/2026 rằng Ctrl+G dùng biến môi trường VISUAL trước, rồi đến EDITOR. Chỉ khi cả hai đều chưa được đặt trong môi trường mà bạn khởi động Claude Code, nó mới tự dò VS Code, vi hoặc nano. Cũng theo câu trả lời đó, trình soạn thảo có giao diện đồ họa phải chờ đến khi file được đóng, ví dụ code --wait.
Trên Windows, khi chưa đặt VISUAL và EDITOR, chúng tôi không xác nhận được Claude Code mở trình soạn thảo nào. Tài liệu không ghi điều này. Cách chắc chắn nhất là tự đặt biến.
Ví dụ dưới đây dùng VS Code. Tài liệu dòng lệnh của VS Code mô tả cờ --wait là “Wait for the files to be closed before returning”, tức là lệnh code chỉ trả về khi bạn đóng file.
Trên Windows, trong PowerShell, đặt biến cho phiên hiện tại, kiểm tra, rồi chạy Claude Code:
$env:VISUAL = "code --wait"
echo $env:VISUAL
claudeĐể giữ biến lâu dài, dùng setx. Theo tài liệu của Microsoft, biến đặt bằng setx chỉ có trong các cửa sổ lệnh mở sau đó, không có trong cửa sổ hiện tại. Vậy hãy đóng terminal, mở terminal mới, rồi mới chạy claude.
setx VISUAL "code --wait"Trên macOS hoặc Linux, thêm dòng export vào ~/.bashrc hoặc ~/.zshrc, rồi mở terminal mới và kiểm tra:
export VISUAL="code --wait"
echo "$VISUAL"Nếu bạn thích trình soạn thảo trong terminal, đặt export VISUAL=nano. Khi bạn chạy Claude Code trên VPS trong tmux qua SSH, trình soạn thảo mở ra trên máy chủ, không phải trên máy tính của bạn. Lúc đó hãy đặt VISUAL trên máy chủ và dùng một trình soạn thảo chạy trong terminal như nano.
Kiểm tra kết quả: nhấn Ctrl+G trong Claude Code. Trình soạn thảo bạn chọn phải mở ra, và Claude Code chờ đến khi bạn đóng file. Nếu một trình soạn thảo khác mở ra, biến chưa có trong môi trường của Claude Code. Lý do thường gặp là bạn chạy claude trong một terminal đã mở từ trước khi đặt biến.
Cách 2 (thử nghiệm trên Windows): CLAUDE_CODE_BS_AS_CTRL_BACKSPACE
Trang Terminal configuration ghi rằng trên Windows, Claude Code đọc phím Backspace đến dưới dạng ^H (mã 0x08) là Ctrl+Backspace, tức là xóa cả từ phía trước. Ngoại lệ là khi TERM_PROGRAM là mintty hoặc TERM là cygwin. Đặt CLAUDE_CODE_BS_AS_CTRL_BACKSPACE=0 thì 0x08 được tính là Backspace thường. Trên macOS và Linux, mặc định đã là Backspace thường.
Tài liệu viết biến này cho những terminal mà mỗi lần nhấn Backspace lại xóa cả một từ, và không nhắc gì tới bộ gõ tiếng Việt. Nhưng nó liên quan trực tiếp đến mã 0x08 mà #33891 nói bộ gõ trên Windows gửi. Vì vậy nó đáng thử, như một thí nghiệm:
$env:CLAUDE_CODE_BS_AS_CTRL_BACKSPACE = "0"
claudeSau đó gõ “xin chào” và “tiếng” bằng Unikey ngay trong prompt. Chúng tôi chưa kiểm chứng kết quả, nên đừng coi đây là bản sửa. Hãy ghi lại điều bạn thấy: dấu ra đúng, vẫn lặp chữ, hay mất cả từ.
Cách 3: thử bộ gõ hoặc giao diện khác, và tự kiểm chứng
Một số bộ gõ không dùng kiểu xóa lùi rồi chèn lại. Chúng hiện chữ đang ghép dưới dạng gạch chân (pre-edit) và chỉ gửi chữ hoàn chỉnh khi ghép xong. Về lý thuyết, kiểu này không cần gửi phím xóa lùi. Nhưng chúng tôi chưa thử bộ gõ nào dưới đây với Claude Code. Bằng chứng duy nhất là báo cáo của người dùng.
- Bàn phím Vietnamese Telex có sẵn của Windows 11. Microsoft hướng dẫn cài trong Settings > Time & language > Language & region > Add a language > Vietnamese. Nhấn phím Windows + phím cách để đổi bàn phím. Khi bàn phím này bật, khay hệ thống hiện chữ VIE. Lưu ý: #33891 liệt kê chính bàn phím Telex có sẵn này trong số các bộ gõ bị lỗi.
- Telex có sẵn của macOS. Ngày 19/8/2025, người dùng qtnx viết trong issue #3961 rằng bàn phím Telex mặc định của macOS “works fine”. Đó là báo cáo của một người, ở một phiên bản Claude Code cũ.
- ibus-bamboo trên Linux. README của dự án ghi chế độ mặc định là Pre-edit, chế độ duy nhất có gạch chân. Năm chế độ còn lại không gạch chân. Nhấn
Shift+~trong một ô nhập để mở bảng chế độ và chọn bằng phím số. README không nói gì về Claude Code. - Gõ Nhanh (gonhanh.org). Đây là một bộ gõ tiếng Việt, không phải bản vá cho Claude Code. Nó hỗ trợ Telex và VNI, giấy phép BSD-3-Clause. README ghi bản macOS đã sẵn sàng, còn bản Linux x86_64 và Windows đang beta. Tác giả viết rằng các bộ gõ hiện có thường xuyên gặp lỗi khi họ làm việc với Claude Code.
Về các giao diện khác của Claude Code: chúng tôi không có kết quả thử nào cho bản web, ứng dụng desktop hay khung chat trong VS Code. Issue #32041 báo rằng gõ tiếng Việt trong khung chat của plugin JetBrains (PhpStorm, Windows, Unikey/EVKey) bị lỗi sau khi nâng cấp lên v2.1.71, trong khi gõ trong terminal PowerShell vẫn được. Issue đó bị bot đóng ngày 5/4/2026, không có câu trả lời của maintainer. Trong #3961, qtnx cũng ghi rằng terminal của Zed “works without any issues” và iTerm2 “sometimes it works”, vào tháng 8/2025.
Quy tắc đơn giản: chỉ coi một bộ gõ hoặc một giao diện là dùng được khi chính bạn đã gõ thử trên đó và thấy dấu ra đúng.
Các bản vá cộng đồng sửa gì, và vì sao cần cẩn thận
Có vài dự án cộng đồng sửa trực tiếp mã của Claude Code đã cài trên máy bạn. Chúng tôi chỉ mô tả những gì README của chúng nói. Chúng tôi không khuyên dùng dự án nào.
- tvtdev94/claude-code-vietnamese-fix. README nói công cụ vá file
cli.jsnếu bạn cài bằng npm, hoặc vá phần JavaScript nhúng trong file chạy Bun nếu bạn cài bản native (WinGet hoặc tải trực tiếp). Nó tạo bản sao lưu, và cờ--restoređưa bản gốc trở lại. README thừa nhận “Claude Code updates overwrite the patch”, nên nó đề nghị thêm một hook SessionStart vào~/.claude/settings.jsonđể vá lại khi phiên bắt đầu. Công cụ chạy quanpx, giấy phép MIT. - 0x0a0d/fix-vietnamese-claude-code. README nói công cụ tự tìm và vá
cli.js(npm) hoặc file binary của Claude Code. Khi đọc lại ngày 20/10/2026, README ghi rõ bản vá chỉ dành cho các phiên bản cũ: “Claude Code >= 2.1.108: Không cần patch nữa.” Ai còn dùng bản thấp hơn 2.1.108 được khuyên nâng cấp thay vì tiếp tục vá. Chỉ khi vẫn ở bản cũ, bạn mới phải chạy lại lệnh vá mỗi lần Claude Code cập nhật sang một phiên bản cũ khác. README không nói gì về sao lưu hay gỡ bản vá, và tự ghi dự án là “Project Deprecated”. Chủ dự án đã lưu trữ (archive) repo ngày 18/4/2026, nên nó chỉ còn ở chế độ đọc. - Trong #7989 còn có người nhắc tới trancong12102/claude-code-vime, và #30240 dẫn tới manhit96/claude-code-vietnamese-fix. Chúng tôi chưa đọc mã của hai dự án này.
Trước khi chạy bất kỳ công cụ nào ở trên, hãy nghĩ xem nó chạm vào cái gì. Claude Code giữ thông tin đăng nhập tài khoản của bạn và được quyền chạy lệnh shell trên máy. Một gói npm sửa file chạy của nó có cùng quyền đó. Hook SessionStart còn làm việc này tự động mỗi lần bạn mở phiên, vì hook trong Claude Code chạy lệnh với quyền của bạn. Nếu tác giả gói đổi mã, hoặc ai đó chiếm được tài khoản npm của họ, bạn sẽ chạy mã mới mà không biết. Đó là một quyết định về chuỗi cung ứng phần mềm. Hãy đọc về các cuộc tấn công chuỗi cung ứng qua npm trước khi chọn. Nếu vẫn muốn dùng, hãy đọc mã nguồn trước và ghim đúng phiên bản bạn đã đọc.
Kiểm tra lại sau mỗi lần cập nhật Claude Code
Lỗi này có thể được sửa trong một bản cập nhật mà không có thông báo nào bằng tiếng Việt. Ngược lại, một bản cập nhật cũng có thể làm hỏng thứ đang chạy tốt, như #32041 cho thấy. Vì vậy, hãy chạy cùng một bài kiểm tra sau mỗi lần cập nhật.
claude --version
claude update
claude --versionTheo tài liệu CLI, claude --version (hoặc claude -v) in số phiên bản, còn claude update cập nhật lên bản mới nhất. Sau đó:
- Mở
claudetrong terminal bạn hay dùng. - Bật bộ gõ, chọn kiểu Telex.
- Gõ trực tiếp vào prompt:
hayx suwar codeđể ra “hãy sửa code”. Gõ thêm “xin chào” và “tiếng Việt”. - Dán cùng câu đó vào một dòng mới để so sánh.
- Xóa prompt bằng
Ctrl+Cmà không gửi.
Kết quả tốt là chữ gõ và chữ dán giống hệt nhau. Nếu chữ gõ có “aà”, “eê” hoặc mất dấu, lỗi vẫn còn ở phiên bản đó. Hãy ghi lại số phiên bản, hệ điều hành, terminal, tên và phiên bản bộ gõ. Khi đóng #7989, bot viết: “Please open a new issue if this is still relevant.” Vậy nếu lỗi vẫn còn, hãy mở issue mới trên GitHub của Claude Code kèm những thông tin đó. Một báo cáo có số phiên bản cụ thể có ích hơn một bình luận “+1” trong thread đã khóa.
FAQ
Vì sao gõ Unikey trong Claude Code bị lặp chữ nhưng dán vào thì đúng?
Unikey, EVKey và OpenKey ghép dấu bằng cách gửi phím xóa lùi rồi gửi chữ thay thế. Theo các báo cáo trong issue #7989, #33891 và #39689, ô nhập của Claude Code không xử lý đúng chuỗi xóa lùi nhanh này, nên chữ cũ không bị xóa hết và “xin chào” thành “xin chaào”. Khi dán, văn bản đến một lần dưới dạng chữ hoàn chỉnh, không có phím xóa lùi nào, nên chữ ra đúng. Anthropic chưa xác nhận cơ chế này.
Anthropic đã sửa lỗi gõ tiếng Việt Telex trong Claude Code chưa?
Tính đến 18/10/2026, chưa rõ. Issue chính #7989 bị bot đóng ngày 24/5/2026 mà không có câu trả lời của maintainer. Issue #22853 được đóng là đã sửa ngày 6/2/2026 nhưng không nêu phiên bản, và sau đó vẫn có báo cáo lỗi mới. Chúng tôi không thấy mục nào trong CHANGELOG.md chính thức nhắc tiếng Việt, Telex hay Unikey. Hãy chạy claude --version rồi tự gõ “hãy sửa code” để biết phiên bản của bạn có lỗi hay không.
Ctrl+G trong Claude Code mở trình soạn thảo nào?
Claude Code dùng biến VISUAL trước, rồi đến EDITOR. Nếu cả hai chưa được đặt, nó tự dò VS Code, vi hoặc nano. Trên Windows, tài liệu không ghi trình soạn thảo mặc định, nên hãy tự đặt, ví dụ setx VISUAL "code --wait", rồi mở terminal mới trước khi chạy claude. Trình soạn thảo đồ họa cần một cờ chờ như --wait để Claude Code đợi bạn đóng file.
Có nên dùng bản vá cộng đồng để sửa lỗi gõ tiếng Việt không?
Đó là lựa chọn của bạn, nhưng hãy hiểu cái giá. Các bản vá như tvtdev94/claude-code-vietnamese-fix sửa trực tiếp mã Claude Code đã cài, và README của nó nói mỗi lần cập nhật sẽ ghi đè bản vá. Claude Code giữ thông tin đăng nhập và chạy lệnh shell, nên chạy mã của người lạ lên nó là một rủi ro chuỗi cung ứng. Cách Ctrl+G với một trình soạn thảo bạn tin dùng không cần sửa gì trong Claude Code.
Bàn phím Telex có sẵn của Windows 11 có tránh được lỗi không?
Chưa có bằng chứng cho thấy vậy. Issue #33891 (tháng 3/2026, Claude Code 2.1.74) liệt kê chính bàn phím Telex có sẵn của Windows, cùng với UniKey và EVKey, trong số các bộ gõ bị lỗi. Bạn có thể cài nó qua Settings > Time & language > Language & region và tự thử. Chỉ coi nó là dùng được khi bạn đã gõ “tiếng Việt” vào prompt và thấy dấu ra đúng.