การเปิดตัว Neovim 0.6.0 ซึ่งเป็นโปรแกรมแก้ไข Vim เวอร์ชันที่ทันสมัย

Neovim 0.6.0 เปิดตัวแล้ว ซึ่งเป็นทางแยกของโปรแกรมแก้ไข Vim ที่เน้นไปที่การเพิ่มความสามารถในการขยายและความยืดหยุ่น โครงการได้ทำการปรับปรุงฐานรหัส Vim มานานกว่าเจ็ดปีซึ่งเป็นผลมาจากการเปลี่ยนแปลงที่ทำให้การบำรุงรักษารหัสง่ายขึ้น ให้วิธีการแบ่งงานระหว่างผู้ดูแลหลายคน แยกอินเทอร์เฟซออกจากส่วนฐาน (อินเทอร์เฟซสามารถ เปลี่ยนแปลงโดยไม่ต้องสัมผัสส่วนภายใน) และใช้สถาปัตยกรรมที่ขยายได้ใหม่โดยใช้ปลั๊กอิน การพัฒนาดั้งเดิมของโครงการได้รับการเผยแพร่ภายใต้ลิขสิทธิ์ Apache 2.0 และส่วนพื้นฐานได้รับการเผยแพร่ภายใต้ลิขสิทธิ์ Vim แอสเซมบลีสำเร็จรูปเตรียมไว้สำหรับ Linux (appimage), Windows และ macOS

ปัญหาอย่างหนึ่งของ Vim ที่กระตุ้นให้เกิดการสร้าง Neovim คือฐานโค้ดขนาดใหญ่ที่ใหญ่โต ซึ่งประกอบด้วยโค้ด C (C300) มากกว่า 89 บรรทัด มีเพียงไม่กี่คนที่เข้าใจถึงความแตกต่างทั้งหมดของโค้ดเบส Vim และการเปลี่ยนแปลงทั้งหมดจะถูกควบคุมโดยผู้ดูแลเพียงคนเดียว ซึ่งทำให้ยากต่อการบำรุงรักษาและปรับปรุงตัวแก้ไข แทนที่จะเป็นโค้ดที่สร้างไว้ใน Vim core เพื่อรองรับ GUI Neovim เสนอให้ใช้เลเยอร์สากลที่ให้คุณสร้างอินเทอร์เฟซโดยใช้ชุดเครื่องมือต่างๆ

ปลั๊กอินสำหรับ Neovim เปิดตัวเป็นกระบวนการแยกต่างหากสำหรับการโต้ตอบกับรูปแบบ MessagePack ที่ใช้ การโต้ตอบกับปลั๊กอินจะดำเนินการแบบอะซิงโครนัสโดยไม่ปิดกั้นส่วนประกอบพื้นฐานของตัวแก้ไข ในการเข้าถึงปลั๊กอิน คุณสามารถใช้ซ็อกเก็ต TCP ได้ เช่น ปลั๊กอินสามารถทำงานบนระบบภายนอกได้ ในขณะเดียวกัน Neovim ยังคงเข้ากันได้กับ Vim แบบย้อนหลัง ยังคงรองรับ Vimscript ต่อไป (มีให้ Lua เป็นทางเลือก) และรองรับการเชื่อมต่อสำหรับปลั๊กอิน Vim มาตรฐานส่วนใหญ่ คุณสมบัติขั้นสูงของ Neovim สามารถใช้ในปลั๊กอินที่สร้างโดยใช้ API เฉพาะของ Neovim

ปัจจุบันมีการเตรียมปลั๊กอินเฉพาะประมาณ 130 รายการแล้ว มีการผูกสำหรับการสร้างปลั๊กอินและการใช้งานอินเทอร์เฟซโดยใช้ภาษาการเขียนโปรแกรมต่างๆ (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) และเฟรมเวิร์ก (Qt, ncurses, Node .js, อิเลคตรอน, GTK) ตัวเลือกอินเทอร์เฟซผู้ใช้หลายอย่างกำลังได้รับการพัฒนา ส่วนเสริม GUI นั้นเหมือนกับปลั๊กอินมาก แต่ต่างจากปลั๊กอินตรงที่จะเริ่มการเรียกไปยังฟังก์ชัน Neovim ในขณะที่ปลั๊กอินถูกเรียกจากภายใน Neovim

การเปลี่ยนแปลงบางอย่างในเวอร์ชันใหม่:

  • เพิ่มการรองรับตัวแปรท้องถิ่นให้กับสคริปต์ vim ซึ่งขอบเขตถูกจำกัดโดยสคริปต์ปัจจุบันเท่านั้น
  • ปรับปรุงการรองรับภาษา Lua อย่างมีนัยสำคัญสำหรับการพัฒนาปลั๊กอินและการจัดการการกำหนดค่า ในสคริปต์ vim ความสามารถในการเรียกใช้ฟังก์ชัน Lua เป็นวิธีการได้ถูกเพิ่มโดยการระบุคำนำหน้า v:lua (เช่น “arg1->v:lua.somemod.func(arg2)”)
  • ความสามารถของไคลเอนต์ LSP ในตัว (โปรโตคอลเซิร์ฟเวอร์ภาษา) ได้รับการขยาย ซึ่งสามารถใช้เพื่อถ่ายโอนตรรกะการวิเคราะห์และการเติมโค้ดให้สมบูรณ์ไปยังเซิร์ฟเวอร์ภายนอก การใช้ LSP ช่วยให้คุณใช้ตัวจัดการสำเร็จรูปมากกว่า 150 ตัวสำหรับภาษาการเขียนโปรแกรมต่าง ๆ ที่เตรียมไว้สำหรับโปรแกรมแก้ไขโค้ด Visual Studio
  • ปรับปรุงเครื่องมือสำหรับการวินิจฉัยปัญหาในโค้ด เพิ่มความสามารถในการแสดงข้อความของข้อความวินิจฉัยและหน้าต่างลอยพร้อมรหัสที่เกี่ยวข้องกับข้อความดังกล่าว มีการประมวลผลข้อความวินิจฉัยที่ส่งโดยเซิร์ฟเวอร์ LSP
  • เพิ่มการรองรับสตริงเสมือน ซึ่งสามารถใช้เพื่อแสดงบล็อกพร้อมข้อมูลบริการ
  • มีการปรับปรุงประสิทธิภาพหลายอย่าง เช่น เปิดใช้งานตารางแฮชสำหรับชื่อกลุ่มที่ไฮไลต์
  • การสนับสนุน Windows 7 และ Windows รุ่น 32 บิตถูกยกเลิกแล้ว

ที่มา: opennet.ru

เพิ่มความคิดเห็น