Source-code editten met vim

Veel ontwikkelomgevingen maken gebruik van een editor waarmee je source code kunt inkloppen en bewaren. Source code editors heb je voor elk platform waarop ontwikkeld wordt. Soms draaien ze lokaal als losse app, soms maken ze deel uit van de IDE en soms draaien ze in de cloud. Elders in dit magazine zie je bijvoorbeeld een online programmeeromgeving waar de source code editor ook online draait in de browser. Maar de oude en vertrouwde editor onder Linux is toch wel vim.

Vim is compact en snel en prima in staat source code weer te geven. Emacs doet ook aan syntax highlighting. Vi en emacs hebben beide al tientallen jaren een eigen schare fans en zo nu en dan loopt het uit op een feature-gevecht. Maar ook gedit heet syntax highlighting. We bekijken hier kort alleen vim.

Vim en gvim

Op Mint is alleen vi beschikbaar, dus je voegt vim toe met apt install vim. Je start vim op de opdrachtregel: $ vim koffie.c en begint met je code. Je ziet meteen de syntax, want deze functie is een instelling die default ingeschakeld is. Om het effect te bekijken zonder syntax highlighting, druk je op ESC en vervolgens :syntax off gevolgd door Enter. Syntax highlighting is nu uitgeschakeld. Syntax highlighting van vim herkent de taal van je source code. Met andere woorden, als je een C-programma maakt, wordt C-code gehighlight, programmeer je in python, dan zie je de python source code in kleurtjes. Hiervoor wordt de bestandsextensie gebruikt. Om het highlight-effect beter te kunnen zien, is de grafische versie van vim beter. Deze installeer je bijvoorbeeld om Mint met apt install vim-gtk. Daarna start je vim met gvim koffie.c om je programma weer te editten. Als je met de muis een haakje aanklikt, toont vim het ander bijbehorende haakje. Je ziet ze dan altijd met paren.

 

Zeer uitgebreid

De mogelijkheden voor syntax highlighting in vim zijn erg uitgebreid. Niet alleen kun je zelf de kleuren van de voor- en achtergrond instellen, het is ook geen probleem een eigen syntaxdefinitie te maken. Standaard worden al veel programmeertalen herkend en zijn de syntaxdefinities meegeleverd. Zo vind je bijvoorbeeld de syntax voor perl in perl.vim in de directory /usr/share/vim/vim74/syntax, naast meer dan 500 andere programmeertalen en configuratiebestanden, die immers ook eigen syntax hebben. Zo heeft ook het .vim-bestand een eigen syntax, die uiteraard door vim herkend wordt (bestand vim.vim). Er is een heel hoofdstuk in de vim-handleiding gewijd aan syntax highlighting, waarin alle details uit de doeken worden gedaan. Als je zelf syntaxdefinities aan het maken bent, ben je feitelijk al aan het programmeren. Het is mogelijk alleen haakjes te highlighten, of alleen getallen, alleen teksten in quotes, Je kunt het zo gek niet bedenken. gvim heeft een hoofdmenu Syntax waar je onder meer highlighting aan- of uitzet en je ook de taal kunt kiezen.

Lexicografisch of semantisch

De meeste syntax highlighting gebeurt lexicografisch, dat geldt voor vim maar ook voor emacs. Dit wil zeggen dat de kleuren worden toegekend aan taal specifieke kernwoorden en elementen, die ook bij elke programmeur hetzelfde zijn. Semantische syntax highlighting is geavanceerder, omdat ook je eigen variabelen, functies en subroutines als element worden herkend. Het herkent dus beter de ware betekenis van je code. Hoe dan ook, coderen met kleurtjes bestaat al lang, maar kan altijd nog beter. Het maakt programmeren uiteindelijk een stuk gemakkelijker en inzichtelijker.

NEDLINUX FORUM

Het nederlandse linuxforum
Voor beginners en pro’s

 

 

 

 

E-mailadres



 

 

Nieuwste editie:

Linuxmag op Facebook

@linuxmagnl op Twitter

linuxmagNL Linux Nieuws: @SUSE bestaat 25 jaar en trakteert! Maak kans op entreeticket voor #SUSECON in Praag, zie link!… https://t.co/ENJKDvyZQ8
linuxmagNL De nieuwe editie van Linux Magazine is weer uit! Thema: bescherm jezelf tegen hackers met Linux. Veel leesplezier a… https://t.co/Zcy3Zdjb90
linuxmagNL Ook de Red Hat Forum BeNeLux 2017 mag je dit jaar niet missen. 10 oktober 2017, zet het in je agenda! https://t.co/niY9UdK3Ov