vim
Konfigurowanie Vima
Szukaj…
Plik vimrc
Plik .vimrc
(wymawiany wrak Vim) jest plikiem konfiguracyjnym Vima. Przechowuje polecenia, które będą wykonywane przez Vima przy każdym uruchomieniu.
Domyślnie plik jest pusty lub nie istnieje; możesz go użyć do dostosowania środowiska Vima.
Aby dowiedzieć się, gdzie Vim oczekuje, że plik vimrc zostanie zapisany, otwórz Vima i uruchom:
:echo $MYVIMRC
Unix: w systemie Unix, takim jak Mac lub Linux, vimrc będzie się nazywał .vimrc
i zwykle znajduje się w katalogu domowym ( $HOME/.vimrc
).
Windows: w systemie Windows będzie się nazywał _vimrc
i będzie znajdować się w twoim katalogu domowym ( %HOMEPATH%/_vimrc
).
Podczas uruchamiania Vim będzie szukał pliku vimrc w wielu miejscach. Pierwszy z nich jest używany, pozostałe są ignorowane. Aby uzyskać pełne odniesienie, zobacz :h $MYVIMRC
dokumentację :h $MYVIMRC
.
Z jakich opcji mogę skorzystać?
Jeśli nie wiesz, jakich opcji powinieneś użyć, możesz zainteresować się poleceniem :options
.
Spowoduje to otwarcie podziału z listą wszystkich opcji Vima i wyświetleniem ich bieżącej wartości. Jest 26 sekcji, aby wyświetlić wszystkie opcje, które możesz wypróbować.
na przykład
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
...
W wierszu wartości (np. set nowrap
) możesz nacisnąć CR, aby przełączyć wartość (jeśli jest to wartość binarna). W linii opcji (np. wrap long line wrap
) możesz nacisnąć CR, aby uzyskać dostęp do dokumentacji tej opcji.
Pliki i katalogi
Cokolwiek zrobisz, aby dostosować Vima, NIGDY nie powinno się zdarzyć poza $HOME
:
- w systemach Linux, BSD i Cygwin
$HOME
to zwykle/home/username/
, - w systemie Mac OS X
$HOME
to/Users/username/
, - w systemie Windows
$HOME
to zwykleC:\Users\username\
.
Kanoniczna lokalizacja twojego vimrc
i twojego katalogu vim
znajduje się w katalogu głównym tego katalogu $HOME
:
w systemach uniksopodobnych
$HOME/.vimrc <-- the file $HOME/.vim/ <-- the directory
w systemie Windows
$HOME\_vimrc <-- the file $HOME\vimfiles\ <-- the directory
Powyższy układ gwarantuje, że zadziała, teraz i w przyszłości.
Vim 7.4 umożliwił trzymanie twojego pięknego vimrc
w katalogu vim
. To naprawdę dobry pomysł, choćby dlatego, że ułatwia przenoszenie konfiguracji.
Jeśli używasz wyłącznie wersji 7.4, wystarczy:
w systemach uniksopodobnych
$HOME/.vim/vimrc
w systemie Windows
$HOME\vimfiles\vimrc
Jeśli chcesz skorzystać z samodzielnego vim/
ale używasz zarówno wersji 7.4, jak i starszej, lub tylko starszej, najprostszym, przyszłościowym rozwiązaniem jest wstawienie tej linii i tylko tej linii:
runtime vimrc
w tym pliku:
w systemach uniksopodobnych
$HOME/.vimrc
w systemie Windows
$HOME\_vimrc
i wykonaj konfigurację w $HOME/.vim/vimrc
lub $HOME\vimfiles\vimrc
.
Opcje
Istnieją trzy rodzaje opcji:
- opcje logiczne,
- opcje strunowe,
- opcje liczbowe.
Aby sprawdzić wartość opcji,
- użyj
:set option?
aby sprawdzić wartość opcji, - użyj
:verbose set option?
aby zobaczyć, gdzie był ostatnio ustawiony.
Ustawianie opcji boolowskich
set booloption " Set booloption.
set nobooloption " Unset booloption.
set booloption! " Toggle booloption.
set booloption& " Reset booloption to its default value.
Ustawianie opcji ciągu
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.
Ustawianie opcji liczbowych
set numoption=1 " 1
set numoption+=2 " 1 + 2 == 3
set numoption-=1 " 3 - 1 == 2
set numoption^=8 " 2 * 8 == 16
Używanie wyrażenia jako wartości
przy użyciu konkatenacji:
execute "set stroption=" . my_variable
za pomocą
:let
:let &stroption = my_variable
Zobacz :help :set
i :help :let
.
Mapowania
- Nie umieszczaj komentarzy po mapowaniach, to wszystko popsunie.
- Użyj
:map <F6>
aby zobaczyć, co jest mapowane na<F6>
iw jakim trybie. - Użyj
:verbose map <F6>
aby zobaczyć również, gdzie była ostatnio mapowana. -
:map
i:map!
są zbyt ogólne. Użyj:n[nore]map
dla mapowania w trybie normalnym,::i[nore]map
dla trybu wstawiania:x[nore]map
dla trybu wizualnego itp.
Mapowania rekurencyjne
Używaj mapowań rekurencyjnych tylko wtedy, gdy zamierzasz używać innych mapowań w swoich mapowaniach:
nnoremap b B
nmap <key> db
W tym przykładzie b
działa tak jak B
w trybie normalnym. Ponieważ używamy b
w mapowaniu rekurencyjnym , naciśnięcie <key>
będzie działać jak dB
, a nie jak db
.
Odwzorowania nierekurencyjne
Używaj mapowań nierekurencyjnych tylko wtedy, gdy zamierzasz używać domyślnych poleceń w mapowaniach, co jest prawie zawsze tym, czego chcesz:
nnoremap <key> db
W tym przykładzie używamy b
w mapowaniu nierekurencyjnym, więc naciśnięcie klawisza zawsze będzie działać jak db
, niezależnie od tego, czy zmieniliśmy mapowanie b
czy nie.
Wykonywanie polecenia z mapowania
nnoremap <key> :MyCommand<CR>
Wykonywanie wielu poleceń z mapowania
nnoremap <key> :MyCommand <bar> MyOtherCommand <bar> SomeCommand<CR>
Wywołanie funkcji z mapowania
nnoremap <key> :call SomeFunction()<CR>
Mapowanie mapowania <Plug>
map <key> <Plug>name_of_mapping
Patrz :help map-commands
:help key-notation
i :help <plug>
.
zobacz Key Mappings w Vimie, by przeczytać dalej
Zmienne
Podobnie jak większość języków skryptowych, vimscript ma zmienne.
Zmienną można zdefiniować za pomocą polecenia :let
:
let variable = value
i usuń za pomocą :unlet
:
unlet variable
W Vimie można zmieniać zakres zmiennych, przygotowując jedną literę i dwukropek do ich nazwy. Autorzy wtyczek używają tej funkcji do naśladowania opcji:
let g:plugin_variable = 1
Zobacz :help internal-variables
.
Polecenia
- Nie zapomnij o huku, który pozwoli Vimowi zastąpić to polecenie przy następnym załadowaniu vimrc.
- Niestandardowe polecenia muszą zaczynać się od wielkich liter.
Przykłady
command! MyCommand call SomeFunction()
command! MyOtherCommand command | Command | command
- Zobacz
:help user-commands
.
Funkcje
- Nie zapomnij huku, aby Vim mógł zastąpić tę funkcję następnym razem, gdy przeładujesz skrypt, w którym funkcja jest zdefiniowana.
- Funkcje niestandardowe muszą zaczynać się od dużej litery (funkcje globalne) lub od
s:
(lokalne funkcje skryptu), lub muszą być poprzedzone nazwą powiązaną z wtyczką autoload, w której są zdefiniowane (np. W{&rtp}/autoload/foo/bar.vim
moglibyśmy zdefiniowaćfoo#bar#functionname()
). - Aby móc użyć parametrów w funkcji, użyj
a:parameter_name
. Funkcje variadic można zdefiniować za pomocą wielokropka...
, aby uzyskać dostęp do parametrów użyja:000
(lista wszystkich parametrów) luba:0
(liczba parametrów równalen(a:000)
),a:1
najpierw bez nazwy parametry i tak dalej. - Funkcje można wywoływać w następujący sposób
:call MyFunction(param1, param2)
- Każda linia w funkcji niejawnie zaczyna się od
:
w ten sposób wszystkie polecenia są polecenia okrężnicy - Aby zapobiec dalszemu wykonywaniu funkcji przez funkcję w przypadku błędu, najlepiej opatrzyć podpis funkcji funkcją
abort
Przykład
function! MyFunction(foo, bar, ... ) abort
return a:foo . a:bar . (a:0 > 0 ? a:1 : '')
endfunction
Funkcje skryptu
Jeśli planujesz używać swojej funkcji tylko w pliku, w którym jest ona zdefiniowana (albo dlatego, że złamałeś większą funkcję na mniejsze części, albo dlatego, że użyjesz jej w poleceniu, mapowaniu, ...), możesz przedrostek it with s:
:, unikając zaśmiecania globalnej przestrzeni nazw za pomocą bezużytecznych funkcji wewnętrznych:
function! s:my_private_function() " note we don't need to capitalize the first letter this time
echo "Hi!"
endfunction
Korzystanie z funkcji s: z mapowań
Jeśli twoja funkcja lokalna skryptu będzie używana w mapowaniu, musisz odwołać się do niej za pomocą specjalnego prefiksu <SID>
:
nnoremap <your-mapping-key> :call <SID>my_private_function()<CR>
Zobacz :help user-functions
.
Zauważ jednak, że od Vima 7 najlepszą praktyką jest definiowanie skrótów mapowania, poleceń i menu we wtyczkach (ft) oraz definiowanie funkcji we wtyczkach autoload - z wyjątkiem funkcji, z których wtyczki muszą korzystać podczas ładowania. Oznacza to, że w dzisiejszych czasach potrzeba wywoływania skryptów funkcji lokalnych z mapowań nie jest tak istotna, jak kiedyś.
Grupy poleceń automatycznych
- Grupy poleceń automatycznych są dobre dla organizacji, ale mogą być również przydatne do debugowania. Pomyśl o nich jak o małych przestrzeniach nazw, które możesz dowolnie włączać / wyłączać.
Przykład
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
Zobacz :help autocommand
.
Warunkowe
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
Patrz :help has-patch
i :help feature-list
.
Ustawianie opcji
Najczęściej używasz :set
aby ustawić opcje według własnych upodobań w .vimrc
. Istnieje wiele opcji, które można zmienić.
Na przykład, aby użyć spacji do wcięcia:
:set expandtab
:set shiftwidth=4
:set softtabstop=4
Podświetlanie składni
Włącz podświetlanie składni, gdy terminal ma kolory
if &t_Co > 2 || has("gui_running")
syntax on
end
Pokaż końcowe białe znaki i tabulatory. Wyświetlanie kart może być szczególnie przydatne podczas wyszukiwania błędów w plikach Makefiles.
set list listchars=tab:\|_,trail:.
highlight SpecialKey ctermfg=DarkGray
Schematy kolorów
Vim ma kilka wstępnie zainstalowanych schematów kolorów. W Linuksie schematy kolorów dostarczane z Vimem są przechowywane w /usr/share/vim/vim74/colors/
(gdzie 74 to numer wersji, bez okresów); MacVim przechowuje je w /Applications/MacVim.app/Contents/Resources/vim/runtime/colors
.
Zmiana schematów kolorów
Polecenie colorscheme
przełącza bieżący schemat kolorów.
Na przykład, aby ustawić schemat kolorów na „robokai”:
:colorscheme robokai
Domyślny schemat kolorów jest twórczo nazywany default
, więc aby powrócić do niego, użyj
:colorscheme default
Aby wyświetlić wszystkie aktualnie zainstalowane schematy kolorów, wpisz :colorscheme
, spację, a następnie tabulację lub ctrl d .
Instalowanie schematów kolorów
Zainstalowane przez użytkownika schematy kolorów można umieścić w ~/.vim/colors/
. Po dodaniu schematu kolorów do tego katalogu pojawi się on jako opcja w poleceniu colorscheme
.
Aby znaleźć nowe schematy kolorów, istnieją witryny takie jak vimcolors, które zawierają różne schematy kolorów. Istnieją również narzędzia, takie jak vim.ink i Vivify, które pomagają w tworzeniu własnych schematów kolorów lub można je tworzyć ręcznie.
Przełącz wyliczanie linii
Aby włączyć - wpisz:
:set number
lub :set nu
.
Aby wyłączyć - wpisz:
:set nonumber
lub :set nonu
.
Aby włączyć wyliczanie względem położenia kursora - wpisz:
:set relativenumber
.
Aby wyłączyć wyliczanie względem położenia kursora - wpisz:
:set norelativenumber
.
Uwaga: Aby zmienić, czy bieżący wiersz pokazuje rzeczywisty numer wiersza, czy 0
, użyj poleceń :set number
i :set nonumber
, gdy atrybut relativenumber
jest aktywny.
Wtyczki
Wtyczki Vima to dodatki, których można użyć do zmiany lub zwiększenia funkcjonalności vima.
Vimawesome ma dobrą listę wtyczek