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 meestal C:\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 we foo#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 parameters a:000 (lijst van alle parameters) of a:0 (aantal parameters gelijk aan len(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



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow