- เปิดตัวเรนเดอเรอร์แบบทดลองที่แก้ปัญหาหน้าจอกระพริบและการกระโดดของหน้าจอจากเรนเดอเรอร์เดิม
- แม้บทสนทนาจะยาวขึ้น ก็ยังคงรักษาการใช้หน่วยความจำและ CPU ให้คงที่ และในสภาพแวดล้อมเทอร์มินัลยังสามารถคลิกเมาส์ ย้ายเคอร์เซอร์ และคลิกองค์ประกอบ UI ได้
- เปิดใช้งานด้วยตัวแปรสภาพแวดล้อม
CLAUDE_CODE_NO_FLICKER=1
- เดิมทีด้วยข้อจำกัดเชิงโครงสร้างของ ANSI code ในเทอร์มินัล หากต้องการวาดแถวที่อยู่นอก viewport ใหม่ จะต้องใช้โค้ดล้างทั้งหน้าจอ แต่เรนเดอเรอร์ใหม่แก้ปัญหานี้ด้วยการทำ virtualize ทั้ง viewport
- ยังมีข้อแลกเปลี่ยนอยู่ เช่น ยังไม่รองรับการค้นหาแบบ native cmd-f, การคัดลอก-วาง และการปรับฟิสิกส์การเลื่อนยังไม่เสร็จสมบูรณ์ จึงยังอยู่ในขั้นทดลอง
- เนื้อหาบทสนทนาอยู่ใน alternate screen buffer ไม่ใช่ scrollback จึงสามารถกด
Ctrl+O เพื่อเข้าสู่โหมด Transcript แล้วใช้การค้นหาแบบ less (/, n/N) ได้
- ช่องป้อนข้อความจะตรึงอยู่ด้านล่างของหน้าจอแม้ระหว่างที่เอาต์พุตกำลังสตรีม
- รองรับการจัดการอีเวนต์เมาส์ภายในแอป เช่น ปรับตำแหน่งเคอร์เซอร์ด้วยเมาส์ ขยายผลลัพธ์ของทูล เปิด URL/พาธไฟล์ และลากเลือกข้อความ
รายละเอียดเพิ่มเติมดูได้ที่ Fullscreen rendering ในเอกสาร Claude Code (แนบไว้ด้านล่าง)
การเรนเดอร์แบบเต็มหน้าจอ
- ตั้งค่าตัวแปรสภาพแวดล้อม
CLAUDE_CODE_NO_FLICKER=1 ก่อนรัน หรือเพิ่ม export CLAUDE_CODE_NO_FLICKER=1 ใน ~/.zshrc / ~/.bashrc เพื่อให้มีผลอัตโนมัติกับทุกเซสชัน
- ต้องใช้ Claude Code v2.1.88 ขึ้นไป และขณะนี้ยังอยู่ในขั้น research preview โดยพฤติกรรมอาจเปลี่ยนแปลงได้ตามฟีดแบ็ก
- ชื่อว่า “fullscreen” ไม่ได้เกี่ยวกับการขยายหน้าต่างเทอร์มินัลให้เต็มจอ และทำงานได้กับทุกขนาดหน้าต่าง
สิ่งที่เปลี่ยนไปเมื่อเทียบกับวิธีเดิม
- ช่องป้อนข้อความจะตรึงอยู่ด้านล่างของหน้าจอแม้ระหว่างที่เอาต์พุตกำลังสตรีม (ถ้าช่องป้อนข้อความถูกตรึงอยู่ แปลว่าเปิดใช้งาน fullscreen rendering แล้ว)
- เนื้อหาบทสนทนาอยู่ใน alternate screen buffer จึงมีความเปลี่ยนแปลงจากเดิมดังนี้:
| เดิม |
หลังเปลี่ยน |
ค้นหาข้อความด้วย Cmd+F หรือการค้นหาของ tmux |
กด Ctrl+O แล้วค้นหาด้วย / หรือกด [ เพื่อเขียนลง native scrollback แล้วใช้ Cmd+F |
| เลือกและคัดลอกด้วยการลากเลือกแบบ native ของเทอร์มินัล |
เลือกภายในแอป และจะคัดลอกอัตโนมัติเมื่อปล่อยปุ่มเมาส์ |
เปิด URL ด้วย Cmd-คลิก |
เปิดได้ด้วยการคลิก URL |
การรองรับเมาส์
- คลิกช่องป้อนพรอมป์ต์: กำหนดตำแหน่งเคอร์เซอร์ได้ทุกจุดในข้อความ
- คลิกผลลัพธ์ของทูลที่พับอยู่: ขยายหรือพับ (การเรียกใช้ทูลและผลลัพธ์จะขยายพร้อมกัน)
- คลิก URL หรือพาธไฟล์: ไฟล์จะเปิดด้วยแอปเริ่มต้น และ URL
http:///https:// จะเปิดในเบราว์เซอร์
- ในเทอร์มินัลที่อิง xterm.js เช่นเทอร์มินัลในตัวของ VS Code จะส่งต่อให้ตัวจัดการลิงก์ของเทอร์มินัลเองเพื่อหลีกเลี่ยงการเปิดลิงก์ซ้ำ
- คลิกแล้วลาก: เลือกข้อความ (ดับเบิลคลิก: เลือกคำ, ทริปเปิลคลิก: เลือกบรรทัด)
- ล้อเมาส์: เลื่อนบทสนทนา
- เมื่อปล่อยปุ่มเมาส์ ข้อความที่เลือกจะถูกคัดลอกไปยังคลิปบอร์ดโดยอัตโนมัติ; ปิดได้ที่
/config
คีย์ลัดการเลื่อน
| คีย์ลัด |
การทำงาน |
PgUp / PgDn |
เลื่อนขึ้น/ลงครั้งละครึ่งหน้าจอ |
Ctrl+Home |
ไปยังจุดเริ่มต้นของบทสนทนา |
Ctrl+End |
ไปยังข้อความล่าสุดและเปิดการติดตามอัตโนมัติอีกครั้ง |
| ล้อเมาส์ |
เลื่อนครั้งละไม่กี่บรรทัด |
- คีย์บอร์ดที่ไม่มีปุ่มเฉพาะ เช่น MacBook สามารถใช้
Fn+↑/↓/←/→ แทน PgUp/PgDn/Home/End ได้
- เมื่อเลื่อนขึ้น การติดตามอัตโนมัติ (auto-follow) จะหยุดชั่วคราว; กด
Ctrl+End หรือเลื่อนลงจนสุดเพื่อกลับมาทำงานต่อ
- คีย์ลัดสามารถปรับแต่งคีย์ไบน์ดิ้งได้ด้วยชื่อแอ็กชันอย่าง
scroll:pageUp, scroll:pageDown เป็นต้น (ดูเอกสาร Keybindings)
- ปรับตัวคูณความเร็วการเลื่อนด้วยล้อเมาส์ได้ด้วยตัวแปรสภาพแวดล้อม
CLAUDE_CODE_SCROLL_SPEED (1~20, ค่าเริ่มต้นแนะนำตาม vim คือ 3)
การค้นหาและทบทวนบทสนทนา (โหมด Transcript)
- เมื่อเข้าสู่โหมด Transcript ด้วย
Ctrl+O จะสามารถใช้การนำทางและค้นหาแบบ less ได้
| ปุ่ม |
การทำงาน |
/ |
เปิดการค้นหา (Enter: ยืนยัน, Esc: ยกเลิก) |
n / N |
ไปยังผลการค้นหาถัดไป/ก่อนหน้า |
j/k หรือ ↑/↓ |
เลื่อนทีละบรรทัด |
g/G หรือ Home/End |
ไปบนสุด/ล่างสุด |
Ctrl+U / Ctrl+D |
เลื่อนครั้งละครึ่งหน้า |
[ |
บันทึกทั้งบทสนทนาลง native scrollback ของเทอร์มินัล (ใช้ Cmd+F ได้) |
v |
บันทึกเป็นไฟล์ชั่วคราวแล้วเปิดด้วย $VISUAL/$EDITOR |
Esc, q, Ctrl+O |
ออกจากโหมด Transcript |
ข้อควรระวังเมื่อใช้ tmux
- หากต้องการใช้การเลื่อนด้วยล้อเมาส์ใน tmux ต้องเพิ่ม
set -g mouse on ใน ~/.tmux.conf
- หากไม่มีโหมดเมาส์ อีเวนต์ล้อเมาส์จะถูกส่งไปที่ tmux; ส่วนการเลื่อนด้วยคีย์บอร์ด
PgUp/PgDn ยังทำงานตามปกติ
- หากเริ่มใช้งานขณะที่โหมดเมาส์ของ tmux ปิดอยู่ Claude Code จะแสดงข้อความแนะนำแบบครั้งเดียว
tmux -CC (โหมดผสานรวมของ iTerm2) ไม่รองรับ
- ในโหมดนี้ alternate screen buffer และ mouse tracking จะทำงานไม่ถูกต้อง และการดับเบิลคลิกอาจทำให้สถานะเทอร์มินัลเสียหาย
- การใช้ tmux ปกติภายใน iTerm2 โดยไม่ใช้
-CC ยังทำงานได้ตามปกติ
วิธีคงการเลือกข้อความแบบ native ไว้
Research preview และฟีดแบ็ก
- มีการทดสอบกับเทอร์มินัลอีมูเลเตอร์หลัก ๆ แล้ว แต่ในเทอร์มินัลที่ไม่ทั่วไปหรือการตั้งค่าพิเศษอาจยังเกิดปัญหาการเรนเดอร์ได้
- หากพบปัญหา ให้รันคำสั่ง
/feedback ใน Claude Code หรือเปิด issue ที่ claude-code GitHub repo (ต้องระบุชื่อและเวอร์ชันของเทอร์มินัลอีมูเลเตอร์)
- หากต้องการปิดใช้งาน ให้ล้างตัวแปรสภาพแวดล้อมออก หรือตั้งค่าเป็น
CLAUDE_CODE_NO_FLICKER=0
6 ความคิดเห็น
ผมใช้แบบโหมดรวมผ่าน
iterm -CCอยู่ครับ.. ก็ไม่ค่อยรู้สึกว่ามีอะไรแปลกนะ...กลับกัน ช่วงก่อนหน้านี้ผมกลับไม่สะดวกเพราะเวลาสกรอลล์ระหว่างเรนเดอร์ มันจะกระโดดขึ้นไปบนสุดแบบบังคับ แต่พอเปลี่ยนเป็นตำแหน่งหยุดนิ่งแล้วแจ้งเตือนเป็น new message ก็ถูกใจเลยครับ ดีเลย..
พอทำแบบนี้แล้วเหมือนว่าจะขึ้นบรรทัดใหม่ด้วย shift + enter ไม่ได้เลย T_T
ดูเหมือนว่าจะเริ่มเปลี่ยนไปมีความรู้สึกแบบ opencode นิด ๆ แล้วนะ
TUI กลายเป็น GUI
ชอบการเปลี่ยนแปลงแบบนี้ครับ~
ดูเหมือนว่ายังต้องขัดเกลาอีกนิดครับ
เมื่อวางเคอร์เซอร์ไว้แล้วใช้เมาส์เลือกตำแหน่งอื่น ควรคัดลอกให้อัตโนมัติ และเมื่อวางก็ควรวางลงในตำแหน่งที่เคอร์เซอร์อยู่
แต่ตอนนี้กลับไปวางในตำแหน่งที่เลือกด้วยเมาส์ครับ