vim: doplňky a nastavení

Vim používám jako hlavní a pokud to jde, tak jediný editor textů. Používám jej skutečně k editaci textů a ne pro řízení jaderného reaktoru pod mým domem, takže můj .vimrc má jen několik řádků (na rozdíl od některých, kde to jde do kB). Ale třeba se budou někomu hodit.

Ja vim, on vi, ty pico!

(Staré lidové moudro o výběru textového editoru.)

Technická poznámka

V Debianu existuje několik balíčků s vimem. Aby fungovalo vše jak má (jak je popsáno v tomto článku), potřebujeme vim-nox. Běžně nainstalovaný vim-tiny nám moc parády neudělá.

apt install vim-nox

Neuškodí rovnou nainstalovat také potřebný základ pro instalaci dalších rozšíření:

apt install vim-addon-manager vim-pathogen

Taby

Taby (karty – jak se to má vlastně správně česky nazývat?)  používáme v prohlížečích, tak proč ne pro editaci více souborů? Podpora tabů je vestavěná, více souborů otevřeme jednoduše pomocí parametru -p:

vim -p README.md *.py *.yml

Otevře se nám editor a na horní hraně vidíme taby se jmény souborů:

vim-tabs

Karty s jednotlivými otevřenými soubory.

Taby se ovládají pomocí:

:tabe – otevře soubor na nové kartě (ekvivalent :e)
:tabn – další tab (napravo od aktuálního)
:tabp – předchozí tab (nalevo od aktuální)
:tabc – uzavře aktuální tab (osobně ale stejně používám :q případně :wq)

Zejména next a prev se používá často, je dobré si na to udělat klávesové zkratky.

V souboru ~/.vimrc nastavíme:

nnoremap <F6> :tabp<Esc>
nnoremap <F7> :tabn<Esc>
nnoremap <F8> :tabc<Esc>

F6 – předchozí, F7 následující, F8 uzavře tab.

Více v dokumentaci tabů.

Po uložení, ukončení a znovuspuštění vimu už budou klávesové zkratky fungovat. Ale proč editor po změně konfigurace restartovat?

Automatický reload konfigurace

Zejména na počátku, kdy si chceme nastavit vim k obrazu svému, hodí se automatické znovunačtení konfigurace. Takže opět v ~/.vimrc nastavíme:

" Automatic reloading vimrc file
autocmd! bufwritepost .vimrc source %

A tentokrát už naposledy editor opustíme a znovuspustíme.

Lepší odsazování

Nechci se hádat o tom, zda je dobré používat tabelátor nebo mezery. Já používám mezery (mimo jiné zvyk z Pythonu). Podstatné je, že vim umí zvětšit či zmenšit odsazení pomocí kláves < a >. Jenže ve výchozím stavu to nefunguje příliš dobře s výběrem (VISUAL). Ve výchozím stavu se to chová tak, že sice změní odsazení vybraných řádků, ale výběr ukončí.

" better indentation

set expandtab
set tabstop=4
set shiftwidth=4
set softtabstop=4

vnoremap < <gv
vnoremap > >gv

Tato konfigurace zajistí, že tab se bude expandovat na 4 mezery a přemapování kláves <, > zajistí očekávané chování změny odsazení vybraných řádků.

Vzhled

Zvykl jsem si na colorscheme default, terminál mám nastavený na černé pozadí, takže se hodí to vimu oznámit (jinak by některé barvy při zapnutém zvýraznění syntaxe byly příliš tmavé):

colorscheme default
set background=dark
syntax on

a když už jsme u toho, hodí se také zobrazení čísla řádků:

set number
vim-number

Čísla řádků na pravém okraji.

pathogen

Ještě než se pustíme do doplňků, je potřeba nastavit pathogen. (Existuje více možností, jak do vimu dostat externí doplňky, já používám pathogen. Většina doplňků podporuje více možností.)

Jak už bylo řečeno, balíček pathogen je přímo v distribuci Debian, takže:

apt install vim-pathogen

Tím ale jeho instalace nekončí. Za uživatele spustíme:

vim-addon-manager install pathogen

a do ~/.vimrc doplníme:

" Pathogen load
filetype off

call pathogen#infect()
call pathogen#helptags()

filetype plugin indent on

vim-fugitive

Podpora gitu ve vimu. Vim umožňuje spouštět příkazy pomocí :! příkaz, ale komu by se chtělo po každé editaci psát :! git add a :! git commit apod.

vim-fugitive (ano, stejný autor jako u pathogenu), je také v distribuci debian, takže opět:

apt install vim-fugitive

a za našeho uživatele:

vim-addon-manager install fugitive

Tím do vimu dostaneme hromadu příkazů (viz :help fugitive), za nejpřínosnější považuju :Gstatus, který otevře okno s klasickým výpisem git status, a pomocí klávesových zkratek je možnost přidat soubory ke commitu apod. Když jsme s výběrem pokojeni, tak pomocí stisku cc se dostaneme na commit (jinak též :Gcommit), napíšeme pěknou zprávu a :wq okno zavřeme a commit je ukončen.

Také doporučuju si osahat :Gdiff (na příkazové řádce před každým git add zkoumám co jsem to vlastně provedl pomocí git diff a protože občas je změn více než mnoho – a commit by měl obsahovat související změny a nic navíc – tak si to chci rozdělit pomocí git add -p).

vim-airline

Takový mnohem lepší status bar. Toto už nemáme v balíčku, takže instalace viz dokumentace repositáře vim-airline.

Airline automaticky podporuje i fugitive, takže zobrazuje existující větev projektu. Dále zobrazuje typ souboru (vim filetype) kódování, polohu kursoru apod.

Doporučuji též nainstalovat balík s barvami, vim-airline-themes. A můžete experimentovat s :AirlineTheme powerlineish a desítkami dalších barevných témat.

Moje nastavení ve ~/.vimrc:

set laststatus=2
set t_Co=265
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#show_buffers = 0
let g:airline_theme = 'powerlineish'

Zobrazí status line vždy, podpora pro 256 barev (ne vždy vim pozná, že je na 256 barevném terminálu), nastavení zobrazení řádku s taby a vypnutí zobrazení bufferů. Nakonec se nastaví téma.

vim-airline, téma powerlineish, zvýraznění tabů.

vim-airline, téma powerlineish, zvýraznění tabů.

Další doplňky

Tímto jsme dostali vim do nějakého rozumného výchozího stavu a tady by se dalo skončit. Máme tedy upraven vzhled vimu, máme zařízené propojení s gitem a jsme připraveni na instalaci libovolných doplňků podporující pathogen.

Osobně používám ještě vim-python-jedi (také v repu Debianu), nahradil jsem jej za vim-python-mode.

Dále, při tvoření rolí a playbooků Ansible se hodí vim-ansible-yaml. (Není v repu, takže hezky ručně git clone...).

Příspěvek byl publikován v rubrice Debian, GIT, Linux, vim. Můžete si uložit jeho odkaz mezi své oblíbené záložky.

2 komentáře: vim: doplňky a nastavení

  1. Ondrej napsal:

    tak pathogen zrovna nemusim … vim-plug mi prijde o dost pouzitelnejsi

    https://github.com/junegunn/vim-plug

  2. lzap napsal:

    Ještě doporučím plugin Control-P: https://github.com/ctrlpvim/ctrlp.vim spolu s MRU je to zabiják pro otvírání souborů v projektech i z MRU listu.

Komentáře nejsou povoleny.