Vim aanpassen met plugins

Op deze pagina:

Vim kun je uitbreiden met allerlei plugins om de functionaliteit van Vim uit te breiden met functies die je zelf handig vindt.

Eerst de een algemene hoofdmap maken voor de plugins:


mkdir -p ~/.vim/pack/vendor/start

Nu kun je Vim plugins plaatsen in ~/.vim/pack/vendor/start en deze zullen dan automatisch worden geladen als je Vim start.

De meeste plugins staan op github en deze kun je eenvoudig met een git clone opdracht installeren.

NERDTree

Bijvoorbeeld: NERDTree, een bestandsverkenner voor Vim. Gebruik Git om een snapshot te klonen van de NERDTree repository:


git clone --depth 1 https://github.com/preservim/nerdtree.git ~/.vim/pack/vendor/start/nerdtree

Mogelijke uitvoer:


Cloning into '/home/kees/.vim/pack/vendor/start/nerdtree'...
remote: Enumerating objects: 48, done.
remote: Counting objects: 100% (48/48), done.
remote: Compressing objects: 100% (40/40), done.
remote: Total 48 (delta 1), reused 20 (delta 0), pack-reused 0
Unpacking objects: 100% (48/48), done.

Start nu Vim en geef deze opdracht:


:NERDTree

Een bestandsverkenner zal dan aan de linkerkant van je Vim venster worden geopend.

Aanpassingen voor NERDTree in .vimrc

In het .vimrc bestand kun je de werking van deze plugin verder aanpassen.

Sneltoets toevoegen voor Control+t om NERDTree aan/uit te zetten:


nnoremap <C-t> :NERDTreeToggle<CR>

NERDTree automatisch starten als vim wordt gestart.

Als Vim wordt geopend met een bestand, dan de cursor in het bestand plaatsen:


autocmd StdinReadPre {{ * }} let s:std_in=1
autocmd VimEnter {{ * }} NERDTree | if argc() > 0 || exists("s:std_in") | wincmd p | endif

Vim afsluiten als NERDTree het enige is dat nog openstaat:


autocmd BufEnter * if tabpagenr('$') == 1 && winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif

Vim Airline

Vim Airline is een plugin die de standaard statusregel van Vim Vervangt met een mooiere, meer bruikbare, gekleurde statusregel.

Vim Airline is handig en geeft nuttige info over het bestand dat je aan het bewerken bent, zoals o.a. de bestandsnaam, wel of niet opgeslagen, Vim modus, bestandstype, positie en meer.


git clone https://github.com/vim-airline/vim-airline ~/.vim/pack/dist/start/vim-airline

Mogelijke uitvoer:


Cloning into '/home/kees/.vim/pack/dist/start/vim-airline'...
remote: Enumerating objects: 14795, done.
remote: Counting objects: 100% (460/460), done.
remote: Compressing objects: 100% (280/280), done.
remote: Total 14795 (delta 234), reused 363 (delta 165), pack-reused 14335
Receiving objects: 100% (14795/14795), 3.59 MiB | 4.26 MiB/s, done.
Resolving deltas: 100% (7943/7943), done.

In Vim moet je daarna deze opdracht uitvoeren om help tags te genereren:


:helptags ~/.vim/pack/dist/start/vim-airline/doc

Je krijgt hier verder geen uitvoer van te zien.

.vimrc aanpassen voor vim-airline

Automatically alle buffers laten zien als er maar 1 tab openstaat:


let g:airline#extensions#tabline#enabled = 1

Signaleren dat een bestand is aangepast


let g:airline_detect_modified=1

Signaleren dat er iets te plakken is


let g:airline_detect_paste=1

Versleuteling signaleren


let g:airline_detect_crypt=1

Spelling signaleren


let g:airline_detect_spell=1

Spelling taal signaleren


let g:airline_detect_spelllang=1

Invoegen modus signaleren


let g:airline_detect_iminsert=0

Auto Pairs

De Auto Pairs plugin helpt je bij het invoegen van karakterparen zoals ronde haakjes, vierkante haken, accolades of aanhalingstekens. Dit komt goed van pas bij het schrijven van programmacode waar altijd veel karakterparen in gebruikt worden. Wat geopend wordt, moet ook weer afgesloten worden.Installeren kan met:


git clone https://github.com/jiangmiao/auto-pairs.git ~/.vim/pack/dist/start/auto-pairs

Mogelijke uitvoer:


Cloning into '/home/kees/.vim/pack/dist/start/auto-pairs'...
remote: Enumerating objects: 654, done.
remote: Total 654 (delta 0), reused 0 (delta 0), pack-reused 654
Receiving objects: 100% (654/654), 112.55 KiB | 4.89 MiB/s, done.
Resolving deltas: 100% (200/200), done.

Karakterparen voor Auto Pairs aanvullen in vimrc

Voor HTML commentaar en voor Flask en Django (alleen in HTML bestanden):


au FileType html let b:AutoPairs = AutoPairsDefine({'<!--' : '-->', '{{' : '}}', '{%': '%}'})

Voor PHP tags (alleen in PHP bestanden):


au FileType php let b:AutoPairs = AutoPairsDefine({'<?' : '?>', '<?php': '?>'})

Nerdcommenter

Met de NERD Commenter plugin kun je snel van een groep regels commentaarregels maken.

NERD Commenter werkt met de standaard Vim filetype plugin, dus deze begrijpt verschillende programmeertalen en gebruikt de juiste commentaarkarakters voor enkele regelcommentaren en multi-regelcommentaren.

In de Visual modus kun je meerdere regels selecteren en deze allen tegelijk van commentaarstatus wisselen.

NERD Commenter kan ook werken met counts zodat je een getal als count n kan opgeven gevolgd door de opdracht om meerdere regels tegelijk aan te passen.

Installeren kan met:


git clone https://github.com/preservim/nerdcommenter.git ~/.vim/pack/dist/start/nerdcommenter

Mogelijke uitvoer:


Cloning into '/home/kees/.vim/pack/dist/start/nerdcommenter'...
remote: Enumerating objects: 2467, done.
remote: Counting objects: 100% (129/129), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 2467 (delta 60), reused 113 (delta 51), pack-reused 2338
Receiving objects: 100% (2467/2467), 939.14 KiB | 4.27 MiB/s, done.
Resolving deltas: 100% (1037/1037), done.

In .vimrc de filetype plugin aanzetten:


filetype plugin on

Vier regels commentaar maken:


4\cc

Vier regels in/uit commentaar halen:


4\c spatie

Vier regels uit commentaar halen:


4\ci

Vier regels geformatteerd als commentaar zetten:


4\cs

Vim Surround

De Vim Surround plugin helpt je om karakters om bestaande tekst heen te zetten, zoals haakjes, aanhalingstekens of HTML/XML tags. Vim Surround lijkt op Auto pairs, maar dan voor reeds bestaande tekst.Installeren kan met:


git clone https://github.com/tpope/vim-surround.git ~/.vim/pack/dist/start/vim-surround

Mogelijke uitvoer:


Cloning into '/home/kees/.vim/pack/dist/start/vim-surround'...
remote: Enumerating objects: 446, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 446 (delta 0), reused 3 (delta 0), pack-reused 441
Receiving objects: 100% (446/446), 132.61 KiB | 6.03 MiB/s, done.
Resolving deltas: 100% (140/140), done.

Voorbeelden van het gebruik:

cs"'

Van: "Hallo wereld!" naar: 'Hallo wereld!'

cs'<q>

Van: 'Hallo wereld!' naar: <p>Hallo wereld!</p>

cst"

Van: <p>Hallo wereld!</p> naar: "Hallo wereld!"

ds"

Van: "Hallo wereld!" naar: Hallo wereld!

(cursor in Hallo) ysiw]

Van: Hallo wereld! naar: [Hallo] wereld!

cs]{

Van: [Hallo] wereld! naar: { Hallo } wereld!

yssb of yss)

Van: { Hallo } wereld! naar: ({ Hallo } wereld!)

ds{ds)

Van: ({ Hallo } wereld!) naar: Hallo wereld!

ysiw<em>

Van: Hallo wereld! naar: <em>Hallo</em> wereld!

In visual modus: druk op een hoofdletter V (voor regelsgewijs visual modus) gevolgd door S<p class="groet">

Van: <em>Hallo</em> wereld! naar: <p class="groet"> <em>Hallo</em> wereld!</p>

Vim Gitgutter

De plugin Vim Gitgutter is nuttig als je Git als een version control system gebruikt. In de kolom naast de regelnummers, "the gutter", toont deze plugin tildes waar iets is veranderd, plustekens waar iets is toegevoegd en mintekens waar iets is verwijderd.Vim Gitgutter integreert automatisch met de Vim-Airline plugin zonder dat je iets in .vimrc hoeft aan te passen.Installeren kan met:


git clone https://github.com/airblade/vim-gitgutter.git ~/.vim/pack/dist/start/vim-gitgutter

Mogelijke uitvoer:


Cloning into '/home/kees/.vim/pack/dist/start/vim-gitgutter'...
remote: Enumerating objects: 3861, done.
remote: Counting objects: 100% (170/170), done.
remote: Compressing objects: 100% (94/94), done.
remote: Total 3861 (delta 85), reused 133 (delta 60), pack-reused 3691
Receiving objects: 100% (3861/3861), 1.30 MiB | 2.52 MiB/s, done.
Resolving deltas: 100% (2075/2075), done.

Vim Fugitive

Met de plugin Vim Fugitive kun je Git opdrachten in Vim geven.Installeren kan met:


git clone https://github.com/tpope/vim-fugitive.git ~/.vim/pack/dist/start/vim-fugitive

Mogelijke uitvoer:


Cloning into '/home/kees/.vim/pack/dist/start/vim-fugitive'...
remote: Enumerating objects: 8211, done.
remote: Counting objects: 100% (1452/1452), done.
remote: Compressing objects: 100% (452/452), done.
remote: Total 8211 (delta 717), reused 1282 (delta 627), pack-reused 6759
Receiving objects: 100% (8211/8211), 2.56 MiB | 4.19 MiB/s, done.
Resolving deltas: 100% (3811/3811), done.

Met :Git of :G kun je nu git opdrachten uitvoeren zoals: :Git commit, :Git diff en :Git log.

Vim CSS color

Kleuren in je code alvast kunnen zien. Vim-css-color is een snelle, multi-syntax context-sensitive color name highlighter.

Installeren kan met:


git clone https://github.com/ap/vim-css-color.git ~/.vim/pack/css-color/start/css-color

Mogelijke uitvoer:


Cloning into '/home/kees/.vim/pack/css-color/start/css-color'...
remote: Enumerating objects: 1246, done.
remote: Counting objects: 100% (123/123), done.
remote: Compressing objects: 100% (62/62), done.
remote: Total 1246 (delta 48), reused 108 (delta 39), pack-reused 1123
Receiving objects: 100% (1246/1246), 723.22 KiB | 2.47 MiB/s, done.
Resolving deltas: 100% (471/471), done.

Kleurschema One

Een kleurschema zoals in Atom.

Installeren kan met:


git clone https://github.com/rakr/vim-one.git ~/.vim/pack/dist/start/vim-one

Mogelijke uitvoer:


Cloning into '/home/kees/.vim/pack/dist/start/vim-one'...
remote: Enumerating objects: 633, done.
remote: Counting objects: 100% (11/11), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 633 (delta 3), reused 5 (delta 2), pack-reused 622
Receiving objects: 100% (633/633), 3.82 MiB | 3.74 MiB/s, done.
Resolving deltas: 100% (259/259), done.

Vim Airline theme

Volg dit toe aan je ~/.vimrc voor het airline theme:


let g:airline_theme='one'

Licht en donker

Er zijn 2 'smaken': licht en donker


" ONE kleurschema
" Eerst het kleurschema instellen, dan pas licht of donker
colorscheme one
" De donkere versie:
set background=dark
" De lichte versie:
" set background=light

 

Verwante artikelen