vim
Vim configureren
Zoeken…
Het vimrc-bestand
Het .vimrc
bestand (uitgesproken als Vim-wreck) is een Vim-configuratiebestand. Het bevat opdrachten die door Vim worden uitgevoerd telkens wanneer het wordt gestart.
Standaard is het bestand leeg of bestaat het niet; u kunt het gebruiken om uw Vim-omgeving aan te passen.
Om uit te vinden waar Vim verwacht dat het vimrc-bestand wordt opgeslagen, opent u Vim en voert u het volgende uit:
:echo $MYVIMRC
Unix: op een Unix-systeem zoals Mac of Linux wordt uw vimrc .vimrc
en bevindt zich meestal in uw thuismap ( $HOME/.vimrc
).
Windows: op Windows wordt het _vimrc
en bevindt het zich in uw thuismap ( %HOMEPATH%/_vimrc
).
Bij het opstarten zal Vim op meerdere plaatsen zoeken naar een vimrc-bestand. De eerste die bestaat, wordt gebruikt, de andere worden genegeerd. Zie het :h $MYVIMRC
documentatieartikel voor een volledige referentie.
Welke opties kan ik gebruiken?
Als u niet weet welke opties u moet gebruiken, bent u misschien geïnteresseerd in de opdracht :options
.
Dit opent een splitsing met alle Vim-opties in de lijst en met hun huidige waarde weergegeven. Er zijn 26 secties om alle opties weer te geven die u kunt proberen.
bv
4 displaying text
scroll number of lines to scroll for CTRL-U and CTRL-D
(local to window)
set scr=20
scrolloff number of screen lines to show around the cursor
set so=5
wrap long lines wrap
set nowrap wrap
...
Op een set nowrap
(bijv. Nu set nowrap
) kunt u op CR drukken om de waarde te wijzigen (als het een binaire waarde is). Op een optieregel (bijv. wrap long line wrap
) kunt u op CR drukken om de documentatie voor deze optie te openen.
Bestanden en mappen
Wat je ook doet om Vim aan te passen, het mag NOOIT buiten $HOME
gebeuren:
- op Linux, BSD en Cygwin is
$HOME
meestal/home/username/
, - op Mac OS X is
$HOME
/Users/username/
, - op Windows is
$HOME
meestalC:\Users\username\
.
De canonieke locatie voor je vimrc
en je vim
directory bevindt zich in de root van die $HOME
directory:
op Unix-achtige systemen
$HOME/.vimrc <-- the file $HOME/.vim/ <-- the directory
op Windows
$HOME\_vimrc <-- the file $HOME\vimfiles\ <-- the directory
De lay-out hierboven werkt gegarandeerd, nu en in de toekomst.
Vim 7.4 maakte het mogelijk om je mooie vimrc
in je vim
directory te houden. Het is echt een goed idee, al was het maar omdat het het eenvoudiger maakt om je configuratie te verplaatsen.
Als u uitsluitend 7.4 gebruikt, volstaat het volgende:
op Unix-achtige systemen
$HOME/.vim/vimrc
op Windows
$HOME\vimfiles\vimrc
Als u de voordelen van een zelfstandige vim/
maar zowel 7.4 als een oudere versie of alleen een oudere versie wilt gebruiken, is de eenvoudigste, toekomstbestendige oplossing deze regel te plaatsen en alleen deze regel:
runtime vimrc
in dit bestand:
op Unix-achtige systemen
$HOME/.vimrc
op Windows
$HOME\_vimrc
en $HOME/.vim/vimrc
uw configuratie uit in $HOME/.vim/vimrc
of $HOME\vimfiles\vimrc
.
opties
Er zijn drie soorten opties:
- booleaanse opties,
- string opties,
- aantal opties.
Om de waarde van een optie te controleren,
- gebruik
:set option?
om de waarde van een optie te controleren, - gebruik
:verbose set option?
om ook te zien waar deze het laatst is ingesteld.
Booleaanse opties instellen
set booloption " Set booloption.
set nobooloption " Unset booloption.
set booloption! " Toggle booloption.
set booloption& " Reset booloption to its default value.
Tekenreeksopties instellen
set stroption=baz " baz
set stroption+=buzz " baz,buzz
set stroption^=fizz " fizz,baz,buzz
set stroption-=baz " fizz,buzz
set stroption= " Unset stroption.
set stroption& " Reset stroption to its default value.
Nummeropties instellen
set numoption=1 " 1
set numoption+=2 " 1 + 2 == 3
set numoption-=1 " 3 - 1 == 2
set numoption^=8 " 2 * 8 == 16
Een uitdrukking gebruiken als waarde
met behulp van aaneenschakeling:
execute "set stroption=" . my_variable
gebruik
:let
:let &stroption = my_variable
Zie :help :set
en :help :let
.
mappings
- Plaats geen opmerkingen na toewijzingen, het zal dingen breken.
- Gebruik
:map <F6>
om te zien wat is toegewezen aan<F6>
en in welke modus. - Gebruik
:verbose map <F6>
om ook te zien waar het voor het laatst in kaart is gebracht. -
:map
en:map!
zijn te generiek. Gebruik:n[nore]map
voor toewijzingen in normale modus,::i[nore]map
voor:x[nore]map
voor visuele modus, enz.
Recursieve toewijzingen
Gebruik recursieve toewijzingen alleen als u van plan bent andere toewijzingen in uw toewijzingen te gebruiken:
nnoremap b B
nmap <key> db
In dit voorbeeld werkt b
in de normale modus als B
Omdat we b
in een recursieve afbeelding, werkt het indrukken van <key>
als dB
, niet als db
.
Niet-recursieve toewijzingen
Gebruik niet-recursieve toewijzingen alleen als u van plan bent standaardopdrachten in uw toewijzingen te gebruiken, wat bijna altijd is wat u wilt:
nnoremap <key> db
In dit voorbeeld gebruiken we b
in een niet-recursieve toewijzing, zodat het indrukken van de toets altijd werkt als db
, of we b
opnieuw hebben toegewezen of niet.
Een opdracht uitvoeren vanuit een toewijzing
nnoremap <key> :MyCommand<CR>
Meerdere opdrachten uitvoeren vanuit een toewijzing
nnoremap <key> :MyCommand <bar> MyOtherCommand <bar> SomeCommand<CR>
Een functie aanroepen vanuit een toewijzing
nnoremap <key> :call SomeFunction()<CR>
Een toewijzing van een <Plug>
kaart brengen
map <key> <Plug>name_of_mapping
Zie :help map-commands
:help key-notation
en :help <plug>
.
zie Key Mappings in Vim voor verder lezen
Variabelen
Zoals de meeste scripttalen, heeft vimscript variabelen.
Je kunt een variabele definiëren met de opdracht: :let
:
let variable = value
en verwijder het met :unlet
:
unlet variable
In Vim kunnen variabelen worden bepaald door een enkele letter en een dubbele punt voor hun naam te plaatsen. Auteurs van plug-ins gebruiken die functie om opties na te bootsen:
let g:plugin_variable = 1
Zie :help internal-variables
.
commando's
- Vergeet de knal niet om Vim toe te staan dat commando de volgende keer dat je je vimrc opnieuw laadt, te overschrijven.
- Aangepaste opdrachten moeten beginnen met een hoofdletter.
Voorbeelden
command! MyCommand call SomeFunction()
command! MyOtherCommand command | Command | command
- Zie
:help user-commands
.
functies
- Vergeet niet de knal om Vim toe te staan die functie te overschrijven wanneer u het script opnieuw laadt wanneer de functie is gedefinieerd.
- Aangepaste functies moeten beginnen met een hoofdletter (algemene functies) of met
s:
(lokale scriptfuncties), of ze moeten worden voorafgegaan door de naam die is gekoppeld aan de plug-in voor automatisch laden waar ze zijn gedefinieerd (bijvoorbeeld in{&rtp}/autoload/foo/bar.vim
konden wefoo#bar#functionname()
definiëren. - Om de parameters in de functie te kunnen gebruiken, gebruikt u
a:parameter_name
. Variadische functies kunnen worden gedefinieerd met de ellips...
voor toegang tot de parametersa:000
(lijst van alle parameters) ofa:0
(aantal parameters gelijk aanlen(a:000)
),a:1
eerst niet genoemd parameters, enzovoort. - Functies kunnen zo worden genoemd
:call MyFunction(param1, param2)
- Elke lijn in een functie impliciet begint met een
:
, dus alle opdrachten zijn dikke darm commando's - Om te voorkomen dat de functie wordt uitgevoerd in geval van een fout, kunt u het beste de functiehandtekening annoteren met
abort
Voorbeeld
function! MyFunction(foo, bar, ... ) abort
return a:foo . a:bar . (a:0 > 0 ? a:1 : '')
endfunction
Scriptfuncties
Als u alleen van plan bent uw functie in het bestand te gebruiken waar het is gedefinieerd (omdat u een grotere functie in kleinere delen hebt verbroken, of omdat u deze in een opdracht, een toewijzing, ... zult gebruiken), kunt u het voorvoegsel it with s:
:, vermijd een rommel van uw wereldwijde naamruimte met nutteloze interne functies:
function! s:my_private_function() " note we don't need to capitalize the first letter this time
echo "Hi!"
endfunction
Met behulp van s: functies van toewijzingen
Als uw lokale scriptfunctie wordt gebruikt in een toewijzing, moet u ernaar verwijzen met het speciale voorvoegsel <SID>
:
nnoremap <your-mapping-key> :call <SID>my_private_function()<CR>
Zie :help user-functions
.
Houd er echter rekening mee dat het sinds Vim 7 wordt aanbevolen om afkortingen, opdrachten en menu's voor toewijzingen in (ft) plug-ins te definiëren en functies in autoload-plug-ins te definiëren - behalve de functies die de plug-ins moeten gebruiken wanneer ze worden geladen. Dit betekent dat tegenwoordig de noodzaak om scripts lokale functies uit toewijzingen aan te roepen niet zo relevant is als vroeger.
Autocommand-groepen
- Autocommand-groepen zijn goed voor de organisatie, maar ze kunnen ook handig zijn voor foutopsporing. Zie ze als kleine naamruimten die u naar believen kunt in- of uitschakelen.
Voorbeeld
augroup MyGroup
" Clear the autocmds of the current group to prevent them from piling
" up each time you reload your vimrc.
autocmd!
" These autocmds are fired after the filetype of a buffer is defined to
" 'foo'. Don't forget to use 'setlocal' (for options) and '<buffer>'
" (for mappings) to prevent your settings to leak in other buffers with
" a different filetype.
autocmd FileType foo setlocal bar=baz
autocmd FileType foo nnoremap <buffer> <key> :command<CR>
" This autocmd calls 'MyFunction()' everytime Vim tries to create/edit
" a buffer tied to a file in /'path/to/project/**/'.
autocmd BufNew,BufEnter /path/to/project/**/* call MyFunction()
augroup END
Zie :help autocommand
.
Voorwaardelijke
if v:version >= 704
" Do something if Vim is the right version.
endif
if has('patch666')
" Do something if Vim has the right patch-level.
endif
if has('feature')
" Do something if Vim is built with 'feature'.
endif
Zie :help has-patch
en :help feature-list
.
Opties instellen
Gewoonlijk gebruikt u :set
om opties naar wens in uw .vimrc
. Er zijn veel opties die kunnen worden gewijzigd.
Om bijvoorbeeld spaties te gebruiken voor inspringen:
:set expandtab
:set shiftwidth=4
:set softtabstop=4
Syntaxis markeren
Schakel syntaxisaccentuering in wanneer de terminal kleuren heeft
if &t_Co > 2 || has("gui_running")
syntax on
end
Toon spatie en tabs. Het tonen van tabbladen kan vooral handig zijn bij het zoeken naar fouten in Makefiles.
set list listchars=tab:\|_,trail:.
highlight SpecialKey ctermfg=DarkGray
Kleurenschema's
Vim wordt geleverd met verschillende vooraf geïnstalleerde kleurenschema's. In Linux worden de kleurenschema's die bij Vim worden geleverd, opgeslagen in /usr/share/vim/vim74/colors/
(waarbij 74 uw versienummer is, zonder periodes); MacVim slaat ze op in /Applications/MacVim.app/Contents/Resources/vim/runtime/colors
.
Kleurenschema's wijzigen
De opdracht colorscheme
schakelt het huidige kleurenschema.
Om bijvoorbeeld het kleurenschema in te stellen op "robokai":
:colorscheme robokai
Het standaardkleurenschema wordt creatief default
genoemd, dus gebruik het om terug te keren
:colorscheme default
Als u alle momenteel geïnstalleerde kleurenschema's wilt bekijken, typt u :colorscheme
gevolgd door spatie en vervolgens tab of ctrl d .
Kleurenschema's installeren
Door de gebruiker geïnstalleerde kleurenschema's kunnen in ~/.vim/colors/
worden geplaatst. Zodra een kleurenschema aan deze map is toegevoegd, verschijnt het als een optie voor de opdracht colorscheme
.
Om nieuwe kleurenschema's te vinden, zijn er sites zoals vimcolors die een verscheidenheid aan kleurenschema's bevatten. Er zijn ook tools zoals vim.ink en Vivify om je te helpen bij het maken van je eigen kleurenschema's, of je kunt ze met de hand maken.
Schakelen tussen opsomming van regels
Om in te schakelen - type:
:set number
of :set nu
.
Uitschakelen - typ:
:set nonumber
of :set nonu
.
Om opsomming ten opzichte van de cursorlocatie in te schakelen, typt u:
:set relativenumber
.
Om het optellen ten opzichte van de cursorlocatie uit te schakelen, typt u:
:set norelativenumber
.
Opmerking: om te wijzigen of de huidige regel het werkelijke regelnummer of 0
weergeeft, gebruikt u de opdrachten :set number
en :set nonumber
terwijl het kenmerk relativenumber
actief is.
plugins
Vim-plug-ins zijn add-ons die kunnen worden gebruikt om de functionaliteit van vim te wijzigen of te verbeteren.
Er is een goede lijst met plug-ins bij vimawesome