Skip to content

Neovim, mijn PDE

Posted on:16 januari 2023 at 18:44

Al sinds dat ik begonnen ben met Linux heb ik Vi(m) als tekst editor gebruikt. Veelal om snel wat tekst of code aan te passen en later steeds meer ook als een waardig code editor gebruikt. Ik had toen wel naar andere editors gekeken die meer Intergrated Development Environment (IDE) waren (Eclipse anyone?), maar ik vond ze vooral log, onhandig en traag.

In de periode dat ik veel websites bouwde maakte ik gebruik van aantal plugins in Vim om (o.a.) css- en sass syntax checks uit te voeren. In die periode waren ook andere editors op komst die vooral gefocust waren op web development, zoals Coda, Espresso en Brackets. Allemaal hadden ze net dat iets extra’s wat op dat moment wat lastiger was in Vim.
Die tijd maakte ik de basis klaar in één van de GUI editors, en ging vervolgens verder in Vim. Na een tijdje had ik het bouwen van websites goed onder de knie en was het makkelijker (en sneller) om direct in Vim te doen.

Later kwam ook SublimeText en iets later VSCode in het leven. Deze tools hebben dan ook veel plugins en functionaliteiten die je nodig hebt als IDE, maar dat gaat soms ten koste van de snelheid. (zeker VSCode)
Ander nadeel is dat als je al zo erg gewent bent om Vim te gebruiken dat je soms keymaps tegen kwam in je code, wat eigenlijk een actie in Vim had moeten zijn. Ja, je kon toen al Vim integratie gebruiken in SublimeText of VSCode, maar die was vooral beperkt tot het navigeren in je code.

Om volledig over te stappen naar Vim als IDE, stelde een collega van mij voor om SpaceVim eens te gebruiken.
Ik heb SpaceVim dan ook aantal jaren gebruikt, alleen was het soms lastig om de Language Server Protocol (LSP) goed te configureren of nieuwe plugins toe te voegen. Soms kreeg ik het wel voor elkaar, maar soms had ik wat aangepast en werkte vervolgens een ander plugin weer niet. Het was ook best lastig om goed te achterhalen wat er nu echt fout ging. (althans dat vond ik)
Ander ding is dat SpaceVim een eigen keymap structuur heeft, die ik niet goed onder de knie kreeg. Deze kon je wel aanpassen, maar kon weer problemen geven bij updates van SpaceVim.
Wat ook vervelend was is dat ze ineens Github issues dicht hadden gezet en overgestapt waren naar Google Groups, wat totaal niet handig was. (inmiddels hebben ze dit weer terug gedraaid)
In die periode kwam ik Neovim tegen als alternatief voor Vim en zag er veel belovend uit.

Neovim is een herstructurering van Vim. Het bevat 30% minder source code dan Vim en heeft Lua scripting ondersteuning. Daarbij ondersteunt het nog steeds de standaard Vimscripting van Vim zelf. Dit maakt het soms makkelijker en beter om Vim uit te breiden met functionaliteiten. Het is geen nieuwe tool, maar een verlenging van de standaard.

plugins bijwerken via Neovim

Met Lua ondersteuning was het redelijk makkelijk om extra functies toe te voegen aan mijn Neovim config. Nadeel was wel dat sommige wijzigingen weer in de weg zaten met SpaceVim.
Toen ik op YouTube filmpjes van Christian Chiarulli tegenkwam over Neovim from scratch ben ik deze gaan volgen en uiteindelijk mijn eigen Neovim config gaan opstellen. Het voordeel wat ik toen zag is dat ik Neovim beter begon te begrijpen en dat de Neovim config helemaal naar mijn eigen hand kon leggen in hoe ik het wou hebben.
Deze manier van je Neovim config opstellen noemt TJ de Vries, één van de code developers van Neovim, Personalized Development Environment (PDE).

Ik werk nu ongeveer drie kwart jaar in mijn opgestelde PDE en ben er zeer tevreden mee hoe deze nu is opgebouwd en werkt. Beheren van plugins gaat nu een stuk makkelijker en de plugin configuraties is ook overzichtelijker geworden.

Als je geïnteresseerd bent hoe mijn Neovim configuratie is opgebouwd, dan is deze vinden op https://github.com/rgruyters/nvim.
Doe ermee wat je wilt, maar houd rekening mee dat het is afgestemd op mijn wensen.