vim
Konfigurera Vim
Sök…
Vimrc-filen
.vimrc filen (uttalas Vim-vraket) är en Vim-konfigurationsfil. Den har kommandon som kommer att utföras av Vim varje gång den startar.
Som standard är filen tom eller obefintlig; Du kan använda den för att anpassa din Vim-miljö.
För att ta reda på var Vim förväntar sig att vimrc-filen ska lagras öppnar du Vim och kör:
:echo $MYVIMRC
Unix: på ett Unix-system som Mac eller Linux kommer din vimrc att kallas .vimrc och vanligtvis finns i din hemkatalog ( $HOME/.vimrc ).
Windows: på Windows kommer det att kallas _vimrc och finns i din hemkatalog ( %HOMEPATH%/_vimrc ).
Vid start kommer Vim att söka på en vimrc-fil på flera platser. Den första som finns används, de andra ignoreras. För en fullständig referens se :h $MYVIMRC dokumentationsartikel.
Vilka alternativ kan jag använda?
Om du inte vet vilka alternativ du ska använda kanske du är intresserad av kommandot :options .
Detta öppnar en split med alla listade Vim-alternativ och med deras aktuella värde visas. Det finns 26 avsnitt för att visa alla alternativ du kan prova.
t.ex
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
...
På en set nowrap (t.ex. set nowrap ) kan du trycka på CR för att växla mellan värdet (om det är ett binärt värde). På en alternativrad (t.ex. wrap long line wrap ) kan du trycka på CR för att komma åt dokumentationen för det här alternativet.
Filer och kataloger
Vad du än gör för att anpassa Vim, bör det ALDRIG hända utanför $HOME :
- på Linux, BSD och Cygwin är
$HOMEvanligtvis/home/username/, - på Mac OS X är
$HOME/Users/username/, - i Windows är
$HOMEvanligtvisC:\Users\username\.
Den kanoniska platsen för din vimrc och din vim katalog ligger till roten till den $HOME katalogen:
på Unix-liknande system
$HOME/.vimrc <-- the file $HOME/.vim/ <-- the directorypå Windows
$HOME\_vimrc <-- the file $HOME\vimfiles\ <-- the directory
Layouten ovan garanteras fungera, nu och i framtiden.
Vim 7.4 gjorde det möjligt att hålla din vackra vimrc inuti din vim katalog. Det är verkligen en bra idé, bara för att det gör det lättare att flytta din config runt.
Om du endast använder 7.4, räcker följande:
på Unix-liknande system
$HOME/.vim/vimrcpå Windows
$HOME\vimfiles\vimrc
Om du vill ha fördelarna med en fristående vim/ men använder både 7.4 och en äldre version, eller bara en äldre version, är den enklaste, framtidssäkra lösningen att sätta denna rad och bara denna rad:
runtime vimrc
i den här filen:
på Unix-liknande system
$HOME/.vimrcpå Windows
$HOME\_vimrc
och gör din konfiguration i $HOME/.vim/vimrc eller $HOME\vimfiles\vimrc .
alternativ
Det finns tre typer av alternativ:
- booleska alternativ,
- strängalternativ,
- antal alternativ.
För att kontrollera värdet på ett alternativ,
- använda
:set option?för att kontrollera värdet på ett alternativ, - använda
:verbose set option?för att också se var det senast sattes.
Ställa in booleska alternativ
set booloption " Set booloption.
set nobooloption " Unset booloption.
set booloption! " Toggle booloption.
set booloption& " Reset booloption to its default value.
Ställa in strängalternativ
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.
Ställa in antal alternativ
set numoption=1 " 1
set numoption+=2 " 1 + 2 == 3
set numoption-=1 " 3 - 1 == 2
set numoption^=8 " 2 * 8 == 16
Använda ett uttryck som värde
med hjälp av sammankoppling:
execute "set stroption=" . my_variableanvänder
:let:let &stroption = my_variable
Se :help :set och :help :let .
avbildningar
- Lägg inte kommentarer efter kartläggningar, det kommer att bryta saker.
- Använd
:map <F6>att se vad som är mappat till<F6>och i vilket läge. - Använd
:verbose map <F6>att också se var den senast kartlades. -
:mapoch:map!är för generiska. Använd:n[nore]mapför mappningar för normalt läge,::i[nore]mapför infogningsläge,::x[nore]mapför visuellt läge, etc.
Rekursiva kartläggningar
Använd rekursiva avbildningar endast om du tänker använda andra avbildningar i dina avbildningar:
nnoremap b B
nmap <key> db
I det här exemplet får b att fungera som B i normalt läge. Eftersom vi använder b i en rekursiv kartläggning, kommer att trycka på <key> att fungera som dB , inte som db .
Icke rekursiva kartläggningar
Använd icke-rekursiva mappningar endast om du tänker använda standardkommandon i dina mappningar, vilket nästan alltid är vad du vill:
nnoremap <key> db
I det här exemplet använder vi b i en icke-rekursiv kartläggning så att tryckning av tangenten alltid fungerar som db , oavsett om vi har remappat b eller inte.
Utför ett kommando från en mappning
nnoremap <key> :MyCommand<CR>
Utför flera kommandon från en kartläggning
nnoremap <key> :MyCommand <bar> MyOtherCommand <bar> SomeCommand<CR>
Ringa en funktion från en kartläggning
nnoremap <key> :call SomeFunction()<CR>
Kartlägga en <Plug> -kartläggning
map <key> <Plug>name_of_mapping
Se :help map-commands :help key-notation och :help <plug> .
se nyckelkartläggningar i Vim för vidare läsning
variabler
Liksom de flesta skriptspråk har vimscript variabler.
Man kan definiera en variabel med kommandot: :let :
let variable = value
och ta bort det med :unlet :
unlet variable
I Vim kan variabler skopas genom att förbereda en enda bokstav och ett kolon till deras namn. Pluginförfattare använder den funktionen för att härma alternativ:
let g:plugin_variable = 1
Se :help internal-variables .
kommandon
- Glöm inte banan för att låta Vim skriva över det kommandot nästa gång du laddar om din vimrc.
- Anpassade kommandon måste börja med ett stort tecken.
exempel
command! MyCommand call SomeFunction()
command! MyOtherCommand command | Command | command
- Se
:help user-commands.
funktioner
- Glöm inte banan för att låta Vim skriva över den funktionen nästa gång du laddar om skriptet där funktionen är definierad.
- Anpassade funktioner måste börja antingen med ett stort tecken (globala funktioner) eller med
s:(skript lokala funktioner), eller de måste förinställas med namnet associerat till autoload-plugin där de definieras (t.ex. i{&rtp}/autoload/foo/bar.vimvi definierafoo#bar#functionname()). - För att kunna använda parametrarna i funktionen, använd
a:parameter_name. Variadfunktioner kan definieras med ellipsis..., för att komma åt parametrarna använder dua:000(lista över alla parametrar), ellera:0(antal parametrar lika medlen(a:000)),a:1först namngivna parametrar, och så vidare. - Funktioner kan kallas så:
:call MyFunction(param1, param2) - Varje rad i en funktion börjar implicit med en
:alltså är alla kommandon kolonkommandon - För att förhindra att funktionen fortsätter att köras vid fel, är det bäst att kommentera funktionssignaturen med
abort
Exempel
function! MyFunction(foo, bar, ... ) abort
return a:foo . a:bar . (a:0 > 0 ? a:1 : '')
endfunction
Skriptfunktioner
Om du bara planerar att använda din funktion i filen där den är definierad (antingen för att du har brutit en större funktion i mindre delar, eller för att du kommer att använda den i ett kommando, en mappning, ...), kan du prefix det med s: undviker att förneka ditt globala namnområde med värdelösa interna funktioner:
function! s:my_private_function() " note we don't need to capitalize the first letter this time
echo "Hi!"
endfunction
Använda s: funktioner från mappningar
Om din lokala skriptfunktion kommer att användas i en mappning, måste du referera till den med det speciella <SID> -fixet:
nnoremap <your-mapping-key> :call <SID>my_private_function()<CR>
Se :help user-functions .
Observera dock att sedan Vim 7 anses det vara en bästa praxis att definiera mappningar förkortningar, kommandon och menyer i (ft) plugins och definiera funktioner i autoload plugins - förutom funktionerna plugins måste använda när de laddas. Detta innebär att behovet av att anropa skript till lokala funktioner från mappningar inte numera är så relevant som det brukade vara.
Autokommandogrupper
- Autokommandogrupper är bra för organisation men de kan vara användbara för felsökning också. Tänk på dem som små namnutrymmen som du kan aktivera / inaktivera när du vill.
Exempel
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
Se :help autocommand .
villkors
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
Se :help has-patch och :help feature-list .
Inställningsalternativ
Vanligtvis skulle du använda :set att ställa in alternativ som du vill i din .vimrc . Det finns många alternativ som kan ändras.
För att till exempel använda mellanslag för intryck:
:set expandtab
:set shiftwidth=4
:set softtabstop=4
Syntax Highlighting
Slå på syntaxmarkering när terminalen har färger
if &t_Co > 2 || has("gui_running")
syntax on
end
Visa efterföljande blanksteg och flikar. Att visa flikar kan vara särskilt användbart när du letar efter fel i Makefiles.
set list listchars=tab:\|_,trail:.
highlight SpecialKey ctermfg=DarkGray
Färgscheman
Vim kommer med flera förinstallerade färgscheman. I Linux lagras de färgscheman som kommer med Vim i /usr/share/vim/vim74/colors/ (där 74 är ditt versionnummer, sans perioder); MacVim lagrar dem i /Applications/MacVim.app/Contents/Resources/vim/runtime/colors .
Ändra färgscheman
colorscheme kommandot byter det aktuella färgschemat.
För att till exempel ställa in färgschemat till "robokai":
:colorscheme robokai
Standardfärgschemat benämns kreativt som default , så för att återgå till användningen
:colorscheme default
Om du vill se alla nuvarande installerade färgscheman skriver du :colorscheme följt av mellanslag och sedan antingen flik eller ctrl d .
Installera färgscheman
Användarinstallerade färgscheman kan placeras i ~/.vim/colors/ . När ett färgschema har lagts till i den här katalogen visas det som ett alternativ till kommandot colorscheme .
För att hitta nya färgscheman finns det platser som vimfärger som innehåller en mängd olika färgscheman. Det finns också verktyg som vim.ink och Vivify för att hjälpa dig att skapa dina egna färgscheman, eller så kan du skapa dem för hand.
Växla raduppräkning
För att aktivera - skriv:
:set number eller :set nu .
För att inaktivera - skriv:
:set nonumber eller :set nonu .
För att möjliggöra uppräkning i förhållande till markörens plats - skriv:
:set relativenumber .
För att inaktivera uppräkning i förhållande till markörens plats - skriv:
:set norelativenumber .
Obs: för att ändra om den aktuella raden visar den faktiska linjenumret eller 0 , använd :set number och :set nonumber kommandon medan relativenumber attributet är aktiv.
plugins
Vim-plugins är tillägg som kan användas för att ändra eller förbättra vims funktionalitet.
Det finns en bra lista med plugins på vimawusky