10 điểm bởi xguru 20 ngày trước | 5 bình luận | Chia sẻ qua WhatsApp
  • Giới thiệu trình kết xuất thử nghiệm giúp loại bỏ hiện tượng nhấp nháy và nhảy màn hình của renderer cũ
  • Ngay cả khi cuộc trò chuyện kéo dài, mức sử dụng bộ nhớ và CPU vẫn được giữ ổn định, đồng thời trong môi trường terminal nay đã có thể nhấp chuột, di chuyển con trỏ và nhấp vào các thành phần UI
  • Kích hoạt bằng biến môi trường CLAUDE_CODE_NO_FLICKER=1
  • Do giới hạn cấu trúc của mã ANSI terminal truyền thống, để vẽ lại các hàng ngoài viewport trước đây phải dùng mã xóa toàn bộ màn hình, nhưng renderer mới giải quyết vấn đề này bằng cách ảo hóa toàn bộ viewport
  • Vẫn còn các đánh đổi như chưa hỗ trợ tìm kiếm native bằng cmd-f, copy-paste, và việc tinh chỉnh vật lý cuộn chưa hoàn thiện nên hiện vẫn ở giai đoạn thử nghiệm
  • Vì nội dung hội thoại nằm trong alternate screen buffer thay vì scrollback, có thể vào chế độ Transcript bằng Ctrl+O rồi dùng tìm kiếm kiểu less (/, n/N)
  • Ô nhập liệu sẽ được cố định ở cuối màn hình ngay cả khi đầu ra vẫn đang được stream
  • Hỗ trợ xử lý sự kiện chuột trong ứng dụng như chỉnh vị trí con trỏ bằng chuột, mở rộng kết quả tool, mở URL/đường dẫn tệp và chọn văn bản bằng kéo-thả

Xem chi tiết tại Fullscreen rendering trong tài liệu Claude Code (đính kèm bên dưới)

Kết xuất toàn màn hình

  • Chạy sau khi đặt biến môi trường CLAUDE_CODE_NO_FLICKER=1, hoặc thêm export CLAUDE_CODE_NO_FLICKER=1 vào ~/.zshrc / ~/.bashrc để tự động áp dụng cho mọi phiên
  • Cần Claude Code v2.1.88 trở lên, hiện đang ở giai đoạn research preview nên hành vi có thể thay đổi theo phản hồi
  • Tên gọi "toàn màn hình" không liên quan đến việc phóng to cửa sổ terminal, và hoạt động ở mọi kích thước cửa sổ

Những thay đổi so với cách cũ

  • Ô nhập liệu được cố định ở cuối màn hình ngay cả khi đầu ra vẫn đang được stream (nếu ô nhập được cố định thì tức là kết xuất toàn màn hình đang bật)
  • Vì nội dung hội thoại nằm trong alternate screen buffer nên có các thay đổi sau so với trước đây:
Trước đây Sau thay đổi
Tìm văn bản bằng Cmd+F hoặc tìm kiếm của tmux Nhấn Ctrl+O rồi / để tìm kiếm, hoặc dùng [ để ghi vào native scrollback rồi dùng Cmd+F
Chọn và sao chép bằng kéo-thả native của terminal Chọn trong ứng dụng, tự động sao chép khi thả chuột
Mở URL bằng Cmd-click Mở bằng cách nhấp URL

Hỗ trợ chuột

  • Nhấp vào ô nhập prompt: đặt vị trí con trỏ ở bất kỳ đâu trong văn bản
  • Nhấp vào kết quả tool đang thu gọn: mở rộng hoặc thu gọn (lời gọi tool và kết quả sẽ được mở rộng cùng nhau)
  • Nhấp URL hoặc đường dẫn tệp: tệp sẽ được mở bằng ứng dụng mặc định, còn URL http:///https:// sẽ mở bằng trình duyệt
    • Trên các terminal dựa trên xterm.js như terminal tích hợp của VS Code, việc xử lý được giao cho terminal để tránh mở liên kết hai lần
  • Nhấp và kéo: chọn văn bản (nhấp đúp: chọn từ, nhấp ba lần: chọn dòng)
  • Con lăn chuột: cuộn hội thoại
  • Khi thả nút chuột, văn bản đã chọn sẽ tự động được sao chép vào clipboard; có thể tắt trong /config

Phím tắt cuộn

Phím tắt Hành động
PgUp / PgDn Cuộn lên/xuống nửa màn hình
Ctrl+Home Đi tới đầu cuộc trò chuyện
Ctrl+End Đi tới tin nhắn mới nhất và bật lại chế độ tự động bám theo
Con lăn chuột Cuộn vài dòng mỗi lần
  • Với bàn phím không có phím chuyên dụng như MacBook, có thể dùng Fn+↑/↓/←/→ thay cho PgUp/PgDn/Home/End
  • Khi cuộn lên, auto-follow sẽ tạm dừng; dùng Ctrl+End hoặc cuộn xuống cuối để tiếp tục
  • Có thể tùy biến keybinding bằng các tên hành động như scroll:pageUp, scroll:pageDown... (xem tài liệu Keybindings)
  • Có thể điều chỉnh hệ số tốc độ cuộn bằng con lăn chuột qua biến môi trường CLAUDE_CODE_SCROLL_SPEED (1~20, mặc định khuyến nghị 3 theo kiểu vim)

Tìm kiếm và xem lại hội thoại (chế độ Transcript)

  • Khi vào chế độ Transcript bằng Ctrl+O, có thể dùng điều hướng và tìm kiếm kiểu less
Phím Hành động
/ Mở tìm kiếm (Enter: xác nhận, Esc: hủy)
n / N Chuyển tới kết quả tìm kiếm tiếp theo/trước đó
j/k hoặc / Cuộn từng dòng
g/G hoặc Home/End Đi tới đầu/cuối
Ctrl+U / Ctrl+D Cuộn nửa trang
[ Ghi toàn bộ hội thoại vào native scrollback của terminal (có thể dùng Cmd+F)
v Lưu thành tệp tạm rồi mở bằng $VISUAL/$EDITOR
Esc, q, Ctrl+O Thoát chế độ Transcript

Lưu ý khi dùng tmux

  • Để dùng cuộn bằng con lăn chuột trong tmux, cần thêm set -g mouse on vào ~/.tmux.conf
    • Nếu không bật chế độ chuột, sự kiện con lăn sẽ được chuyển cho tmux; còn cuộn bằng bàn phím PgUp/PgDn vẫn hoạt động bình thường
    • Nếu khởi động khi tmux đang tắt chế độ chuột, Claude Code sẽ hiển thị một thông báo hướng dẫn một lần
  • tmux -CC (chế độ tích hợp iTerm2) không tương thích
    • Ở chế độ này, alternate screen buffer và mouse tracking không hoạt động đúng, và nhấp đúp có thể làm hỏng trạng thái terminal
    • Dùng tmux thông thường trong iTerm2 mà không có -CC thì hoạt động bình thường

Cách giữ lại chọn văn bản native

  • Nếu thấy việc bắt chuột bất tiện, có thể đặt thêm CLAUDE_CODE_DISABLE_MOUSE=1 để chỉ bật chống nhấp nháy và giữ ổn định bộ nhớ mà không bắt chuột
    CLAUDE_CODE_NO_FLICKER=1 CLAUDE_CODE_DISABLE_MOUSE=1 claude  
    
  • Khi tắt bắt chuột, cuộn bằng bàn phím (PgUp, PgDn, Ctrl+Home, Ctrl+End) vẫn giữ nguyên, nhưng việc đặt vị trí con trỏ bằng nhấp chuột, mở rộng kết quả tool, nhấp URL và cuộn bằng con lăn sẽ bị vô hiệu hóa
  • Trong môi trường SSH hoặc bên trong tmux, đường đi clipboard khi bắt chuột có thể khác nhau, và Claude Code sẽ thông báo bằng toast đã dùng đường đi nào sau khi sao chép

Research preview và phản hồi

  • Đã được thử nghiệm trên các terminal emulator phổ biến, nhưng vẫn có thể phát sinh lỗi kết xuất trên các terminal không phổ biến hoặc cấu hình đặc biệt
  • Nếu gặp sự cố, hãy chạy lệnh /feedback trong Claude Code hoặc tạo issue trên repo GitHub của claude-code (cần kèm tên và phiên bản terminal emulator)
  • Để tắt, hãy bỏ biến môi trường hoặc đặt CLAUDE_CODE_NO_FLICKER=0

5 bình luận

 
neocode24 18 ngày trước

Tôi dùng iterm -CC ở chế độ tích hợp, nhưng thật ra không thấy có gì lạ cả...
Ngược lại, từ một thời gian trước, tôi khá khó chịu vì khi cuộn trong lúc đang render thì nó bị nhảy cưỡng bức lên đầu trang; giờ vị trí được giữ nguyên và chuyển thành thông báo new message nên tôi thấy rất thích. Tốt đấy..

 
@deleted_gndfr0dev 19 ngày trước

Có vẻ đang chuyển sang mang hơi hướng giống opencode một chút.

 

TUI trở thành GUI

 

Mình thích những thay đổi như thế này~

 

Có vẻ vẫn cần tinh chỉnh thêm một chút.
Khi đặt con trỏ rồi dùng chuột chọn chỗ khác thì phải tự động sao chép, và khi dán thì phải được dán vào vị trí con trỏ ban đầu.
Nhưng hiện tại lại dán vào chỗ được chọn bằng chuột.