ภายในกรอบของโครงการ Neovim นั้น ฐานโค้ด Vim ได้ถูกปรับปรุงใหม่มานานกว่าห้าปี ซึ่งเป็นผลมาจากการเปลี่ยนแปลงที่ทำให้การบำรุงรักษาโค้ดง่ายขึ้น จัดให้มีวิธีการแบ่งงานระหว่างผู้ดูแลหลายคน แยกอินเทอร์เฟซออกจาก ส่วนฐาน (อินเทอร์เฟซสามารถเปลี่ยนแปลงได้โดยไม่ต้องสัมผัสภายใน) และนำไปใช้ใหม่
ปัญหาอย่างหนึ่งของ Vim ที่กระตุ้นให้เกิดการสร้าง Neovim คือฐานโค้ดขนาดใหญ่ที่ใหญ่โต ซึ่งประกอบด้วยโค้ด C (C300) มากกว่า 89 บรรทัด มีเพียงไม่กี่คนที่เข้าใจถึงความแตกต่างทั้งหมดของโค้ดเบส Vim และการเปลี่ยนแปลงทั้งหมดจะถูกควบคุมโดยผู้ดูแลเพียงคนเดียว ซึ่งทำให้ยากต่อการบำรุงรักษาและปรับปรุงตัวแก้ไข แทนที่จะเป็นโค้ดที่สร้างไว้ใน Vim core เพื่อรองรับ GUI Neovim เสนอให้ใช้เลเยอร์สากลที่ให้คุณสร้างอินเทอร์เฟซโดยใช้ชุดเครื่องมือต่างๆ
ปลั๊กอินสำหรับ Neovim เปิดตัวเป็นกระบวนการแยกต่างหากสำหรับการโต้ตอบกับรูปแบบ MessagePack ที่ใช้ การโต้ตอบกับปลั๊กอินจะดำเนินการแบบอะซิงโครนัสโดยไม่ปิดกั้นส่วนประกอบพื้นฐานของตัวแก้ไข ในการเข้าถึงปลั๊กอิน คุณสามารถใช้ซ็อกเก็ต TCP ได้ เช่น ปลั๊กอินสามารถทำงานบนระบบภายนอกได้ ในขณะเดียวกัน Neovim ยังคงเข้ากันได้กับ Vim แบบย้อนหลัง ยังคงรองรับ Vimscript ต่อไป (มีให้ Lua เป็นทางเลือก) และรองรับการเชื่อมต่อสำหรับปลั๊กอิน Vim มาตรฐานส่วนใหญ่ คุณสมบัติขั้นสูงของ Neovim สามารถใช้ในปลั๊กอินที่สร้างโดยใช้ API เฉพาะของ Neovim
ปัจจุบันแล้ว
การเปลี่ยนแปลงบางส่วนใน
- เพิ่มฟังก์ชัน API ใหม่และกิจกรรมอินเทอร์เฟซผู้ใช้จำนวนมาก
- เพิ่มไลบรารีมาตรฐานใหม่ Nvim-Lua สำหรับการพัฒนาปลั๊กอินในภาษา Lua
- การพัฒนาโปรโตคอลอินเทอร์เฟซผู้ใช้ยังคงดำเนินต่อไป โดยอัปเดตข้อมูลบนหน้าจอในระดับบรรทัด แทนที่จะอัปเดตอักขระแต่ละตัว
- เพิ่มการรองรับหน้าต่างลอยเต็มรูปแบบ ซึ่งสามารถวางในตำแหน่งใดก็ได้ แนบ เชื่อมโยงกับบัฟเฟอร์การแก้ไขแต่ละรายการ และจัดกลุ่มในโหมด Multigrid
- เพิ่มตัวเลือก 'pumblend' สำหรับเมนูแบบเลื่อนลงแบบโปร่งแสง
ที่มา: opennet.ru