Dit is geen introductie voor Vim. De man-page van deze teksteditor geeft je een goede indruk van de mogelijkheden. Het artikel gaat in op vimrc, het configuratiebestand voor Vim (we gebruiken Vim 7.x). We kiezen voor de plug-in manager Pathogen en installeren als introductie een plug-in om je op weg te helpen in de wondere wereld van de Vim plug-ins.

De Vim editor gebruik ik al een tijd, maar op FOSDEM viel me op dat steeds meer mensen de Vim-editor een overhaul geven met plug-ins. Ik ben daarom op onderzoek gegaan wat er met plug-ins allemaal mogelijk is.

 

Plug-in managers

Al vrij snel in mijn tocht naar plug-ins stuitte ik op Plug-in Managers. Op de website https://vimawesome.com/, de plaats voor je zoektocht naar andere prachtig gemaakte plug-ins, zijn de volgende plug-in managers standaard vertegenwoordigd: Vundle, NeoBundle, VimPlug en Pathogen. Er zijn echter meer, bijvoorbeeld apt-vim.

De keuze is uiteindelijk gevallen op Pathogen. Ik heb geen spijt van deze keuze en gebruik Pathogen naar volle tevredenheid. De eenvoud die Pathogen met zich meebrengt, wil ik met dit artikel aantonen. De NERDTree is gekozen als voorbeeld plug-in.

 

Installeren van Pathogen

Voor je aan de slag gaat met het installeren en configureren, heb je een git cliënt nodig. Git is in iedere distributie repository aanwezig. Is dit niet het geval is, kun je op de volgende URL terecht: https://git-scm.com/downloads. Als eerste maak je een aantal directory’s in je homefolder aan.

 LISTING 1

cd ~

mkdir .vim

cd .vim

mkdir autoload

mkdir bundle

 

 Ga in de autoload directory staan om Pathogen te klonen. Het kiezen van een andere directory is ook geen enkel probleem. Later in dit artikel wordt dit uitgelegd.

 LISTING 2

cd ~/.vim/autoload

git clone https://github.com/tpope/vim-pathogen.git

 

 Het activeren van Pathogen doe je door de .vimrc aan te passen. Deze staat in de root van je homefolder. Bestaat deze niet? Voeg eerst de regel toe die getoond wordt in Listing 5 voordat je Listing 4 invoert. Open .vimrc met Vim op de volgende manier.

 LISTING 3

vim ~/.vimrc

 

 

LISTING 4

“ Set syntax on

syntax on

 

Wat is vimrc

Het vimrc-bestand bevat optionele runtime configuratie instellingen. Door in Vim het commando :version in te voeren zie je het overzicht waar de Vim editor zijn configuratie vandaan haalt.

LISTING 5 

    system vimrc file: “/etc/vimrc”
      user vimrc file: “$HOME/.vimrc”
  2nd user vimrc file: “~/.vim/vimrc”
       user exrc file: “$HOME/.exrc”
   fall-back for $VIM: “/etc”
  f-b for $VIMRUNTIME: “/usr/share/vim/current”

 

In dit artikel maken we gebruik van de user vimrc. Vimrc kan erg veel commando’s bevatten achter een dubbele punt. In dit artikel is de dubbele punt achterwege gelaten. Dit is geen probleem. Krijg je de voorbeelden niet aan de gang, begin dan eerst met een dubbele punten. Als voorbeeld wordt Listing 6 als volgt: 

  “ Set syntax on

  :syntax on

 

 Bij de meeste plug-ins, zo niet alle, is aanpassen van vimrc nodig om de plug-in in gebruik te nemen en naar eigen wens te laten functioneren.

 Nu vimrc is verduidelijkt, lopen we de regels van afbeelding 1 langs. De eerste twee regels zijn commentaar en worden genegeerd. Deze regels zijn dus optioneel, maar dit helpt je vooral als je straks gaat experimenteren en meer dan tien plug-ins actief hebt.

Regel drie is naar eigen inzicht aanpasbaar. De runtime dient wel naar de pathogen.vim file te verwijzen. De runtime optie is helemaal weg te laten door pathogen.vim rechtstreeks te kopiëren onder ~/.vim/autoload/ .

Het nadeel van deze keuze is dat je de plug-in niet rechtstreeks meer kan updaten via een git commando, zoals dit wordt besproken in het kopje Updaten van Plug-in(s). Linux zou Linux niet zijn als er niet nog een oplossing zou zijn. Creëer een symlink naar pathogen.vim door het volgende commando:

 ln -s ~/.vim/autoload/vim-pathogen/autoload/pathogen.vim ~/.vim/autoload/

 

Regel vier zorgt ervoor dat Pathogen zijn werk gaat doen door te zoeken naar plug-ins met de daarbij behorende acties. Bij deze entry zijn wijzigingen aan te brengen naar eigen behoefte. Hiervoor verwijs ik je naar de GIT-pagina https://github.com/tpope/vim-pathogen .

 De laatste regel, regel vijf: filetype indent plug-in on zorgt ervoor dat “type” van het bestand bepaald wordt. Meer Informatie over filetypes en het mechanisme zijn te lezen in Vim met het commando :help filetype of op http://vimdoc.sourceforge.net/htmldoc/filetype.html#:filetype-overview .

 

NERDTree installeren

Ga naar de bundle directory. In de bundle directory ga je hetzelfde uitvoeren wat je gedaan hebt bij Pathogen.

 LISTING 8

 cd ~/.vim/bundle

git clone https://github.com/scrooloose/nerdtree.git

 

Pathogen regelt dat de bundle NERDTree wordt toegevoegd aan de runtimepath. Help wordt tevens geregeld door Pathogen. De NERDTree help open je door Vim te openen en het commando :help NERDTree.txt uit te voeren. Als het commando :help NERDTree.txt niet werkt, voer je het volgende commando uit in Vim:

 LISTING 9

 :helptags ~/.vim/bundle/nerdtree/doc/

 

Vimrc heeft wat informatie nodig voor NERDTree. Door de aanpassing die je uitvoert aan de hand van Listing 9 zal NERDTree geopend worden in Vim doormiddel van de CTRL-N toets-combinatie. Er zijn veel meer opties om in te stellen. Deze informatie is te vinden op https://vimawesome.com/plugin/nerdtree-red .

 

LISTING 10

” == NERDTree ==

” Toggling NERDtree on/off with CTRL-n

:map <C-n> :NERDTreeToggle<CR>

” Close NERDTree if there is no open file

:autocmd bufenter * if (winnr(“$”) == 1 && exists(“b:NERDTree”) && b:NERDTree.isTabTree()) | q | endif

 

Ook hier zie je de commentaarregels terug. Door commentaarregels is het te allen tijde duidelijk wat de regel verzorgd. Alles is gedaan om NERDTree in gebruik te nemen. Heropen nu Vim en druk op CTRL-N. Nu zie je de NERDTree aan je linkerkant. Druk nu op het vraagteken. Hiermee open je de help. 

 

Open nu een ander aanwezig tekstbestand door op de kleine letter t te drukken. Er opent een nieuwe tab met daarin het bestand. Om naar het vorige document te gaan, druk je op CTRL-PageUp. Have Fun!

 

Updaten van Plug-in(s)

Voor het updaten van een plug-in ga je gebruik maken van een ander git commando. Ga eerst in de directory staan van de plug-in.

 LISTING 11

cd ~/.vim/bundle/nerdtree

git pull

 

De output in LISTING 12 zal je zien als er een update is en deze wordt doorgevoerd. Is er geen update beschikbaar? Dan zie je de melding Already up-to-date na het git pull commando.

LISTING 12

remote: Counting objects: 5, done. 

remote: Total 5 (delta 2), reused 2 (delta 2), pack-reused 2
Unpacking objects: 100% (5/5), done.
From https://github.com/scrooloose/nerdtree
  5782b22..8a6ae7c  master     -> origin/master
Updating 5782b22..8a6ae7c
Fast-forward
  lib/nerdtree/nerdtree.vim | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

 

 Het updaten van meerdere plug-ins is vervelend. Het automatiseren van deze taak is door middel van een shell script te regelen. Er zijn talloze oplossingen te vinden op het internet. LISTING 13 is hier een voorbeeld van.


LISTING 13

#!/bin/bash

 

cnt=0

cd ~/.vim/bundle &&

for d in *; do

  if [ -d $d/.git ]; then

    echo “Updating $d”

    cd $d && git pull &

    # Prevent having too many subprocesses

    (( (cnt += 1) % 16 == 0 )) && wait

  fi

done

 

 Tot slot

De Vim editor wordt echt nóg leuker in gebruik met plug-ins. De plug-in manager Pathogen zorgt voor een eenvoudige manier om plug-ins in gebruik te nemen. Het bijhouden van patches is door Git niet moeilijk. Ga struinen op https://vimawesome.com/ voor nog meer plug-ins. Als ik een voorstel mag doen, kijk eens naar Airline. Nog een laatste tip voor de Vim teksteditor zelf: op de website http://vim.wikia.com/wiki/Vim_Tips_Wiki zijn tips te vinden die je helpen met het gebruik van Vim in het algemeen.