- Helix เป็น โปรแกรมแก้ไขข้อความแบบโมดัล บนเทอร์มินัล ซึ่งเป็นโปรเจกต์โอเพนซอร์สที่รวมความสามารถสมัยใหม่ไว้ด้วยกัน
- ด้วยการผสานรวม Tree-sitter จึงมี ความสามารถในการแก้ไขที่รับรู้ไวยากรณ์ เช่น การไฮไลต์ไวยากรณ์ การคำนวณการเยื้อง และการนำทางโค้ด
- รองรับ Language Server Protocol เพื่อมอบ ความสามารถระดับ IDE เช่น การเติมโค้ดอัตโนมัติ การไปยังคำจำกัดความ การดูเอกสาร และการวินิจฉัย
- เขียนด้วย Rust จึงทำงานได้โดยไม่ต้องพึ่ง Electron หรือ JavaScript และใช้งานได้อย่างมีประสิทธิภาพใน สภาพแวดล้อม SSH·tmux·เทอร์มินัล
- ระบบปลั๊กอินและ GUI frontend มีแผนพัฒนาในอนาคต โดยมีจุดเด่นคือ โค้ดเบสที่เบาและค่าตั้งต้นสมัยใหม่
คุณสมบัติหลัก
- Helix ใช้ ระบบการเลือกหลายตำแหน่งและเคอร์เซอร์ ที่ได้รับแรงบันดาลใจจาก Kakoune เป็นหน่วยพื้นฐานหลักในการแก้ไข
- คำสั่งสามารถจัดการหลายพื้นที่ที่เลือกพร้อมกัน ทำให้แก้ไขโค้ดแบบ ขนาน ได้
- ใช้ Tree-sitter เพื่อสร้างต้นไม้ไวยากรณ์แบบทนต่อข้อผิดพลาด
- ทำให้รองรับ การไฮไลต์ไวยากรณ์ที่แม่นยำ, การเยื้องอัตโนมัติ, และ การนำทางโค้ด
ความสามารถด้านการจัดการและการนำทางโค้ด
- มีความสามารถในการเลือกและย้ายตาม หน่วยของโหนดในต้นไม้ไวยากรณ์ เช่น ฟังก์ชัน คลาส และคอมเมนต์
- ทำให้สามารถแก้ไขโดยอิง โครงสร้างไวยากรณ์ ไม่ใช่เพียงข้อความธรรมดา
- ผ่าน Language Server Protocol (LSP) จึงรองรับ การเติมโค้ดอัตโนมัติ การไปยังคำจำกัดความ การดูเอกสาร และการวินิจฉัย ตามแต่ละภาษา
- ใช้งานความสามารถระดับ IDE ได้ในสภาพแวดล้อมเทอร์มินัลโดยไม่ต้องตั้งค่าเพิ่มเติม
พื้นฐานทางเทคนิค
- เขียนด้วย Rust เพื่อให้ได้ทั้ง ความเสถียรและประสิทธิภาพ
- ไม่ใช้ Electron, VimScript หรือ JavaScript
- ทำงานได้ในสภาพแวดล้อม SSH, tmux, เทอร์มินัลทั่วไป
- โครงสร้างที่มีน้ำหนักเบาช่วยเพิ่ม ประสิทธิภาพการใช้แบตเตอรี่
ความสามารถสมัยใหม่ที่มีมาในตัว
- รองรับ fuzzy finder สำหรับค้นหาไฟล์และสัญลักษณ์ รวมถึง การค้นหาทั่วทั้งโปรเจกต์
- มีฟังก์ชันอำนวยความสะดวกในตัวหลากหลาย เช่น การปิดวงเล็บอัตโนมัติ, การรวม surround, และ การปรับแต่งธีม
- เป็นโครงสร้างที่ รวมความสามารถพื้นฐานไว้อย่างครบถ้วน โดยไม่ต้องใช้ปลั๊กอินแยก
คำถามที่พบบ่อย
- คำว่า “โพสต์โมเดิร์น” เป็นมุกในความหมายว่า ถ้า Neovim คือ ‘Vim สมัยใหม่’ Helix ก็คือรุ่นถัดจากนั้น
- GUI frontend มีแผนจะพัฒนาเป็น ต้นแบบบน WebGPU ในอนาคต
- ปัจจุบัน ระบบปลั๊กอินยังไม่ได้ถูกนำมาใช้จริง และมีแผนจะเพิ่มในอนาคต
- ความต่างจาก Kakoune คือ Helix มีความสามารถในตัวมากกว่า และใช้ การวิเคราะห์โค้ดบนพื้นฐาน Tree-sitter
- ต่างจาก Vim ตรงที่ Helix ถูกออกแบบใหม่ตั้งแต่ต้น จึงมีโค้ดเบสขนาดเล็ก และมอบ ค่าตั้งต้นสมัยใหม่ที่ต้องปรับแต่งไฟล์ตั้งค่าน้อยมาก
ชุมชนและการมีส่วนร่วม
- สามารถมีส่วนร่วมกับโค้ดได้บน GitHub
- มีการพูดคุยเกี่ยวกับโปรเจกต์ผ่านช่องทาง Matrix
- สามารถสนับสนุนการพัฒนาได้ผ่าน OpenCollective
1 ความคิดเห็น
ความเห็นจาก Hacker News
รู้สึกสนใจหลังเห็นมุกคำว่า “Post-modern?!”
วิศวกรหลายคนเข้าใจ ‘postmodern’ ว่าเป็นแค่ขั้นถัดไปของ modern แต่จริง ๆ แล้วต่างจากความหมายดั้งเดิมในแวดวงศิลปะและมนุษยศาสตร์
แน่นอนว่าการใช้แบบนี้ไม่ใช่ปัญหาใหญ่อะไร แต่ก็ยังสะดุดตาเพราะดันคาดหวังความสร้างสรรค์แบบ ‘โพสต์โมเดิร์น’ จริง ๆ
แต่ในเมื่อ ‘postmodernism’ เดิมทีเป็น แนวคิดที่เกิดขึ้นเพื่อตอบสนองต่อ modernism การตีความว่าเป็น “หลัง modern” ก็ไม่ได้ผิดไปทั้งหมด
เพียงแต่พอเวลาผ่านไป ความหมายของมันก็ซับซ้อนขึ้นมาก และตอนนี้ก็ขำดีที่มันให้ความรู้สึกแบบ “dated af”
“Helix, เอดิเตอร์ตัวแรกที่ไม่เชื่อใน grand narrative. Helix, เอดิเตอร์แบบสัมพัทธนิยม Helix, มาพร้อมอัปเดตล่าสุดของ Foucault และ Derrida”
ใช้ Helix เป็นเอดิเตอร์หลักมาหลายปีแล้ว (Sublime → Atom → Vim → Helix)
LSP ส่วนใหญ่แทบจะ ใช้งานได้โดยไม่ต้องตั้งค่า และไฟล์ config ก็สั้นกว่า .vimrc สมัยก่อนมาก
ใช้เวลาแค่ไม่กี่วันในการปรับ muscle memory จาก Vim แต่ก็ยังมีความรู้สึกซับซ้อนกับ modal editor อยู่
ตอนนี้ยังรอฟีเจอร์ code folding อยู่
ใน Emacs สามารถใช้ multiple cursors กับปลั๊กอินที่อิง treesitter เพื่อแก้ไขได้ทรงพลังแม้ไม่ใช่แบบโมดัล
เลยสงสัยว่า Helix ทำให้รู้สึกอึดอัดด้วยเหตุผลคล้าย ๆ กันหรือเปล่า
บนคีย์บอร์ด Unix รุ่นเก่ามันอยู่ใกล้ home row แต่ตอนนี้มันไกลเกินไป
ทิวทอเรียลส่วนใหญ่ก็ไม่พูดถึงปุ่มทางเลือก เลยไม่เข้าใจว่าทำไมผู้ใช้เกินครึ่งยังใช้ Escape ตรง ๆ กันอยู่
ลองกลับไปใช้ Helix อีกครั้งเมื่อไม่กี่วันก่อน เรื่องที่ใช้ AI ได้ผ่าน LSP อย่างเดียวก็พอรับได้
แต่ การที่ไฟล์ถูกแก้จากภายนอกแล้วไม่รีเฟรชอัตโนมัติ นี่ไม่สะดวกมาก
ทำให้ต้องคอยกังวลตลอดว่าไฟล์ที่ AI แก้ยังเป็นเวอร์ชันล่าสุดอยู่ไหม
วิธีนี้ดูเสถียรและน่าใช้กว่ามาก
ในทางกลับกัน เครื่องมือ AI บางตัวบอกว่า “ไม่ต้องมี IDE ก็ได้” แล้วเน้น CLI เป็นหลัก ซึ่งฉันคิดว่า เหลวไหลสิ้นดี
:reloadและ:reload-allฉัน bind
reload-allไว้กับCtrl-rอีกทางเลือกคือ mux ซึ่งให้ LLM คอมเมนต์การเปลี่ยนแปลงได้เป็นรายบรรทัดหรือรายบล็อก (ยังเป็นเวอร์ชันแรก ๆ อยู่)
เวลาใช้ Claude Code ฉันชอบที่ไฟล์ไม่เปลี่ยนเองอัตโนมัติ
Vim คือ C, Helix คือ C++, ส่วน Ki Editor เหมือน Rust
Helix รับแนวคิดมาจาก Vim เยอะก็จริง แต่ยังขาด ความสม่ำเสมอของคีย์ไบน์ดิ้ง และการผสานแนวคิดเข้าด้วยกันก็ยังไม่แน่นพอ
เช่น ในบัฟเฟอร์ใช้
kเพื่อเลื่อนขึ้นได้ แต่ใน file explorer กลับต้องใช้ctrl+nkใช้เป็นตัวอักษรที่พิมพ์เข้าไป จึงต้องใช้ปุ่มอื่นคิดว่า Helix ก็น่าจะด้วยเหตุผลเดียวกัน
ถ้า SSH ไปเครื่องที่มีเลย์เอาต์คีย์บอร์ดต่างกันจะทำยังไง
ฉันอยากชอบ Helix มากจริง ๆ
ค่าเริ่มต้นก็ตั้งมาดี และถึงขั้นตั้งใจทิ้งนิสัยจาก Vim เพื่อเรียนรู้มัน
แต่สุดท้ายก็สรุปว่า คีย์ไบน์ดิ้งเป็นการประนีประนอมเพื่อให้ implement ได้ง่าย
ตอนนี้เลยกลับไปใช้ Neovim สำหรับงานเล็ก ๆ และ Zed (vim mode) สำหรับงานใหญ่
ตัวอย่างเช่น พอเปิดไฟล์เดิมอีกครั้ง มันไม่กลับไปที่ตำแหน่งเคอร์เซอร์ก่อนหน้า
แม้จะแก้ด้วย LLM ได้ แต่สุดท้ายฉันก็ไม่อยาก แบกภาระดูแล fork ของ Helix
การทิ้ง muscle memory ที่สะสมมาหลายปี มันยากจริง ๆ
สำหรับฉัน การใช้ hx คู่กับ Zed ถือว่าเวิร์กมาก
เพราะ Helix ไม่รองรับการอัปเดตไฟล์แบบสด เลยทำให้ใช้งานร่วมกับ code agent ได้ไม่สะดวก
แนะนำให้ไปดูคำถามข้อที่สองใน FAQ ของ Helix
Python LSP ทำงานได้ทันทีโดยไม่ต้องตั้งค่า ซึ่งน่าประทับใจมาก
แต่เพราะ muscle memory จาก Vim ที่สะสมมา 25 ปี ความต่างเล็ก ๆ ของ Helix เลยทำให้งงมาก
สุดท้ายปัญหาไม่ได้อยู่ที่ Helix แต่อยู่ที่ muscle memory ของฉันเอง
คิดว่า Vim กับ Helix ก็น่าจะเป็นแบบนั้นได้เหมือนกัน
M-ESC ESCให้เป็น คำสั่งที่ไม่อันตราย ก็จะเลี่ยงปัญหาหน้าต่างปิดได้ตัวอย่าง:
(global-set-key (kbd "M-ESC ESC") 'keyboard-quit)พอคุ้นกับความต่างอย่าง
dd,Gแล้วก็ยิ่งชอบขึ้นเรื่อย ๆใช้ Helix เป็นเอดิเตอร์หลักมาตลอดหลายปีที่ผ่านมา
ชอบความเรียบง่าย ความเร็ว การนำทางด้วยคีย์บอร์ดเป็นหลัก และการรวมเข้ากับ Elixir LSP โดยเฉพาะ
ใช้ Helix เป็นหลักและ deploy โค้ดไปเยอะมากแล้ว
ไฟล์ config มีไม่ถึง 50 บรรทัด และแค่เพิ่มคีย์แบบ Vim บางตัวเข้าไป
สลับไปมาระหว่าง Vim กับ Helix ก็ไม่มีปัญหาใหญ่
config ของฉันอยู่ที่นี่
ฉันเคยทำ ส่วนขยาย modal mode สำหรับ VS Code เอง และมองว่าแนวทางของ Kakoune กับ Helix น่าสนใจมาก
โครงสร้างแบบ “แสดงให้เห็นก่อนว่าส่วนไหนจะถูกเปลี่ยน” และ การออกแบบที่ยึด multiple cursors เป็นศูนย์กลาง ฟังดูสมเหตุสมผล
แต่พอผ่านไปไม่กี่สัปดาห์ สุดท้ายก็กลับไปใช้ สไตล์ Vim แบบดั้งเดิม
แนวทาง multiple cursors จะมีประโยชน์ก็ต่อเมื่อมองเห็นการเปลี่ยนแปลงทั้งหมดบนหน้าจอได้เท่านั้น
ทุกวันนี้เพราะ AI ฉันเขียน ข้อความมากกว่าโค้ด เลยรู้สึกว่าคุณค่าของรูปแบบการแก้ไขแบบนี้ลดลง
mc-hide-unmatched-linesที่ทำให้แสดงเฉพาะบรรทัดที่มีเคอร์เซอร์ได้multiple cursors เหมาะกับ การแก้ไขสั้น ๆ และไม่ซับซ้อน แต่ถ้าแก้ไขซับซ้อน เครื่องมือ batch edit จะมีประสิทธิภาพกว่า
ถูกสร้างมาเพื่อแก้ปัญหาเคอร์เซอร์ที่อยู่นอกหน้าจอ