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
$HOME
vanligtvis/home/username/
, - på Mac OS X är
$HOME
/Users/username/
, - i Windows är
$HOME
vanligtvisC:\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 directory
på 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/vimrc
på 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/.vimrc
på 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_variable
anvä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. -
:map
och:map!
är för generiska. Använd:n[nore]map
för mappningar för normalt läge,::i[nore]map
för infogningsläge,::x[nore]map
fö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.vim
vi 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:1
fö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