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 vanligtvis C:\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 definiera foo#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 du a:000 (lista över alla parametrar), eller a:0 (antal parametrar lika med len(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



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow