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 zwykle C:\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żyj a:000 (lista wszystkich parametrów) lub a:0 (liczba parametrów równa len(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



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow