4 คะแนน โดย GN⁺ 2024-08-13 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

ประสบการณ์ใช้งาน WezTerm

ก่อนเริ่มต้น

  • ต้องติดตั้ง WezTerm ก่อน
  • ผู้ใช้ macOS สามารถติดตั้งผ่าน Homebrew ได้ ($ brew install wezterm)

คำอธิบายเกี่ยวกับ Lua

  • การตั้งค่าของ WezTerm กำหนดด้วย Lua
  • Lua คล้ายกับภาษาโปรแกรมแบบไดนามิกอื่น ๆ จึงอ่านเข้าใจได้ง่าย
  • หากต้องการตั้งค่าที่ซับซ้อน แนะนำให้ศึกษา Lua ให้ลึกขึ้น

ไฟล์ตั้งค่าและวงจรฟีดแบ็ก

  • ไฟล์ตั้งค่าอยู่ที่ $XDG_CONFIG_HOME/wezterm/wezterm.lua
  • เมื่อมีการเปลี่ยนแปลงไฟล์ตั้งค่า ระบบจะรีโหลดอัตโนมัติ
  • สามารถตรวจสอบล็อกได้ผ่าน debug overlay (CTRL + SHIFT + L)

การตั้งค่าหน้าตา

ธีมสี

  • WezTerm มีธีมสีให้มากกว่า 1,000 แบบ
  • ตัวอย่าง: config.color_scheme = 'Tokyo Night'

ธีมสีแบบไดนามิก

  • มีตัวอย่างโค้ดสำหรับสุ่มเปลี่ยนธีมสีทุกครั้งที่เปิดหน้าต่างใหม่

เคารพการตั้งค่าหน้าตาของระบบ

  • เปลี่ยนธีมสีอัตโนมัติตามโหมดหน้าตาของระบบ
  • สร้างไฟล์ appearance.lua แล้วตั้งค่า

การตั้งค่าฟอนต์

  • ฟอนต์เริ่มต้นคือ JetBrains Mono
  • ตัวอย่าง: config.font = wezterm.font({ family = 'Berkeley Mono' })

การตกแต่งหน้าต่าง

  • ตั้งค่าความโปร่งใสของพื้นหลังหน้าต่างและเอฟเฟ็กต์เบลอ
  • ตัวอย่าง: config.window_background_opacity = 0.9

การตั้งค่าแถบสถานะ

  • เพิ่มแถบสถานะแบบ powerline ที่ด้านขวาของ tab bar
  • ใช้ Event API ของ WezTerm

การตั้งค่าคีย์

การแมปคีย์พื้นฐาน

  • สามารถคงการแมปคีย์พื้นฐานไว้หรือปิดใช้งานได้ (config.disable_default_key_bindings = true)

ตัวอย่างการแมปคีย์

  • แมป Option + Left Arrow และ Option + Right Arrow ให้ใช้ย้ายข้ามคำ
  • ตั้งค่าคีย์ลัดสำหรับเปิดไฟล์ตั้งค่า (CMD + ,)

ความสามารถด้านมัลติเพล็กซ์

  • ใช้งานฟังก์ชันมัลติเพล็กซ์ของ WezTerm
  • ตั้งค่าคีย์ลัดสำหรับแบ่งหน้าต่าง (CTRL + SHIFT + P)

การตั้งค่า leader key

  • ตั้งค่า leader key เป็น CTRL + A
  • ใช้คีย์ลัดแบ่งหน้าต่างร่วมกับ leader key

การย้ายระหว่าง pane

  • ตั้งค่าการแมปคีย์สำหรับย้ายระหว่าง pane (ใช้ปุ่มทิศทางแบบ vim)

การปรับขนาด pane

  • ตั้งค่า key table สำหรับปรับขนาด pane
  • ใช้งานร่วมกับ leader key เพื่อปรับขนาด pane

พื้นที่ทำงานโปรเจกต์

การสร้างและสลับ workspace

  • สร้างไฟล์ projects.lua แล้วเพิ่มฟังก์ชันสลับโปรเจกต์
  • เมื่อเลือกโปรเจกต์ จะสร้าง workspace ใหม่ของ WezTerm

สรุปโดย GN⁺

  • WezTerm รองรับการตั้งค่าที่ยืดหยุ่นด้วย Lua จึงปรับแต่งได้หลากหลาย
  • ฟังก์ชันรีโหลดอัตโนมัติและ debug overlay ช่วยให้แก้ไขการตั้งค่าได้สะดวก
  • ความสามารถด้านมัลติเพล็กซ์และการจัดการ workspace ทำได้ดีมาก และเพิ่มประสิทธิภาพการทำงานได้ด้วยการแมปคีย์ที่หลากหลาย
  • เทอร์มินัลที่มีความสามารถคล้ายกันได้แก่ Alacritty และ kitty

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

 
GN⁺ 2024-08-13
ความคิดเห็นจาก Hacker News
  • เพิ่งย้ายมาใช้ WezTerm ได้ไม่นานและพอใจมาก ก่อนหน้านี้ใช้ kitty และชอบการตั้งค่าและความเรียบง่ายของ iTerm2 มากกว่า แต่ WezTerm มีความสามารถที่ให้มาจากค่าเริ่มต้นดีกว่ามาก การตั้งค่าเทอร์มินัลสั้นพอที่จะเห็นได้ทั้งหมดในหน้าจอของตัวแก้ไข จากนั้นก็แทบไม่ต้องสนใจเทอร์มินัลอีกเลย

    • ตอนใช้ kitty เจอปัญหาบ่อย และพยายามทำให้ได้ฟีเจอร์แบบ iTerm2 แต่รู้สึกผิดหวังกับคอมเมนต์ที่ห้วนและไม่ใส่ใจจากผู้ดูแล kitty
    • ตัวอย่างเช่น เมื่อถามว่า "จะตั้งค่า tmux ใน kitty อย่างไร?" ก็ได้รับคำตอบว่า "อย่าทำเลย, tmux มันงี่เง่า" สุดท้ายก็เลิกพยายาม
  • WezTerm ตอบสนองต่อ GitHub issue ได้เร็วมาก โดยปกติจะแก้ปัญหาให้ภายในหนึ่งหรือสองวัน นอกจากปัญหาเล็กน้อยเกี่ยวกับ modifier key ผ่าน SSH แล้ว ฟีเจอร์แทบจะสมบูรณ์แบบ เร็วและดีมาก

    • ก่อนหน้านี้เคยเป็นแฟนตัวยงของ Alacritty แต่ต้องการการรองรับ modifier ที่ดีกว่าสำหรับ remote emacs
  • ตอนย้ายจาก Kubuntu มา Ubuntu อยากได้บางฟีเจอร์ของ Konsole (scrollback แบบไม่จำกัด, การค้นหาใน scrollback) แต่ไม่อยากติดตั้ง Konsole เลยติดตั้ง WezTerm แทน ชอบทันทีตั้งแต่แรก แต่หลายฟีเจอร์ค้นหาเจอได้ไม่ง่าย เอกสารดีมาก และผู้เขียนก็มีส่วนร่วมและช่วยเหลือดีมาก

    • ตัวอย่างเช่น เคยหาวิธีเลือกบล็อกข้อความขนาดใหญ่ด้วยคีย์บอร์ดอย่างเดียวและลองทำได้ครั้งหนึ่ง แต่ก็ลืมอย่างรวดเร็วแล้วกลับไปใช้เมาส์เลือกข้อความอีก เพราะเร็วกว่าการค้นหน้าเอกสารใหม่
    • เผื่อใครสนใจ หน้าที่ตามหาคือ https://wezfurlong.org/wezterm/copymode.html
  • เคยลองทั้ง Mac Terminal, iTerm2, Kitty, Warp และอื่น ๆ แต่สุดท้ายมาจบที่ WezTerm ตั้งค่าง่าย เร็ว และดูดี เลยทำธีมไว้ด้วย

  • ข้อดีของ WezTerm คืออะไร? WezTerm รองรับข้ามระบบปฏิบัติการอย่างสมบูรณ์ ใช้ได้ทั้งบน Linux, macOS, Windows และแชร์การตั้งค่าเทอร์มินัลข้ามหลาย OS ได้

  • ใช้ WezTerm มาประมาณ 1 ปีแล้ว และสนับสนุน Wez บน GitHub อยู่ WezTerm เป็นเทอร์มินัลที่ยอดเยี่ยม และนักพัฒนาก็ยอดเยี่ยมเช่นกัน ใช้การคัดลอกแบบรวดเร็วและโหมดคัดลอกอื่น ๆ บ่อยมาก

    • ใช้งานคล้าย mosh+tmux จากโน้ตบุ๊ก MacOS ไปยังเครื่อง Linux สำหรับทำงาน โดยเปิด session ค้างไว้ตลอด ทำให้ทำงานบนเครื่องงานจาก Mac ได้เสมอ มีทั้ง session, pane และ tab ที่เชื่อมต่อกลับได้
  • เหตุผลที่ยังใช้ iTerm2 ต่อไปคือฟีเจอร์ "Edit->Selection Respects Soft Boundaries" ฟีเจอร์นี้ตีความอักขระ pipe | เป็นตัวแบ่ง pane ทำให้การเลือกข้อความตัดตามนั้น

  • เห็นด้วยกับความเห็นของคนอื่น ๆ ใช้ macOS มาเกือบ 10 ปีและใช้ iTerm2 มาตลอด ช่วงหลังเริ่มช้าลง เวลากด cmd-tab ต้องรอเกิน 1 วินาทีกว่าเทอร์มินัลจะโผล่มา

    • ประเมินตัวเลือกอื่นหลายตัวแล้วแต่ไม่ถูกใจ ตัวหนึ่งต้องมี account/login อีกตัวเขียนด้วย {Java,Type}Script แล้วแม้แต่คำสั่งง่าย ๆ ก็พังเพราะปัญหา async stream
    • WezTerm เร็วมาก ปรับแต่งได้ และมีธีม OneDark (base16) มาให้เป็นค่าเริ่มต้น
    • ตอนตั้งค่าเริ่มต้นต้องเพิ่ม cmd-left และ cmd-right ลงในการตั้งค่า lua
  • Wez กำลังจะออกหนังสือเกี่ยวกับ system programming ด้วย Rust

  • นอกเรื่อง: ตอนนี้ตั้งตารอ Ghostty ที่สร้างโดยผู้ก่อตั้ง HashiCorp มากที่สุด