10 คะแนน โดย xguru 28 일 전 | 6 ความคิดเห็น | แชร์ทาง WhatsApp
  • เปิดตัวเรนเดอเรอร์แบบทดลองที่แก้ปัญหาหน้าจอกระพริบและการกระโดดของหน้าจอจากเรนเดอเรอร์เดิม
  • แม้บทสนทนาจะยาวขึ้น ก็ยังคงรักษาการใช้หน่วยความจำและ 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 ไว้

  • หากไม่สะดวกกับการจับเมาส์ สามารถตั้งค่า CLAUDE_CODE_DISABLE_MOUSE=1 เพิ่มเติมเพื่อเปิดเฉพาะการป้องกันการกระพริบและการคงการใช้หน่วยความจำให้สม่ำเสมอ โดยไม่จับเมาส์
    CLAUDE_CODE_NO_FLICKER=1 CLAUDE_CODE_DISABLE_MOUSE=1 claude  
    
  • เมื่อปิดการจับเมาส์ การเลื่อนด้วยคีย์บอร์ด (PgUp, PgDn, Ctrl+Home, Ctrl+End) ยังใช้ได้ แต่การคลิกเพื่อกำหนดตำแหน่งเคอร์เซอร์ การขยายผลลัพธ์ของทูล การคลิก URL และการเลื่อนด้วยล้อเมาส์จะถูกปิดใช้งาน
  • ในสภาพแวดล้อม SSH หรือภายใน tmux เส้นทางคลิปบอร์ดจะต่างออกไปเมื่อมีการจับเมาส์ และ Claude Code จะแจ้งผ่าน toast ว่าใช้เส้นทางใดหลังการคัดลอก

Research preview และฟีดแบ็ก

  • มีการทดสอบกับเทอร์มินัลอีมูเลเตอร์หลัก ๆ แล้ว แต่ในเทอร์มินัลที่ไม่ทั่วไปหรือการตั้งค่าพิเศษอาจยังเกิดปัญหาการเรนเดอร์ได้
  • หากพบปัญหา ให้รันคำสั่ง /feedback ใน Claude Code หรือเปิด issue ที่ claude-code GitHub repo (ต้องระบุชื่อและเวอร์ชันของเทอร์มินัลอีมูเลเตอร์)
  • หากต้องการปิดใช้งาน ให้ล้างตัวแปรสภาพแวดล้อมออก หรือตั้งค่าเป็น CLAUDE_CODE_NO_FLICKER=0

6 ความคิดเห็น

 
neocode24 26 일 전

ผมใช้แบบโหมดรวมผ่าน iterm -CC อยู่ครับ.. ก็ไม่ค่อยรู้สึกว่ามีอะไรแปลกนะ...
กลับกัน ช่วงก่อนหน้านี้ผมกลับไม่สะดวกเพราะเวลาสกรอลล์ระหว่างเรนเดอร์ มันจะกระโดดขึ้นไปบนสุดแบบบังคับ แต่พอเปลี่ยนเป็นตำแหน่งหยุดนิ่งแล้วแจ้งเตือนเป็น new message ก็ถูกใจเลยครับ ดีเลย..

 
sm0514sm 27 일 전

พอทำแบบนี้แล้วเหมือนว่าจะขึ้นบรรทัดใหม่ด้วย shift + enter ไม่ได้เลย T_T

 
@deleted_gndfr0dev 27 일 전

ดูเหมือนว่าจะเริ่มเปลี่ยนไปมีความรู้สึกแบบ opencode นิด ๆ แล้วนะ

 
tested 27 일 전

TUI กลายเป็น GUI

 
kimjoin2 27 일 전

ชอบการเปลี่ยนแปลงแบบนี้ครับ~

 
byforce 28 일 전

ดูเหมือนว่ายังต้องขัดเกลาอีกนิดครับ
เมื่อวางเคอร์เซอร์ไว้แล้วใช้เมาส์เลือกตำแหน่งอื่น ควรคัดลอกให้อัตโนมัติ และเมื่อวางก็ควรวางลงในตำแหน่งที่เคอร์เซอร์อยู่
แต่ตอนนี้กลับไปวางในตำแหน่งที่เลือกด้วยเมาส์ครับ