Po instalaci editoru Vim z balíčků do čistého systému se často dočkáte nezkonfigurovaného programu. Jaké základní volby se hodí pro běžné použití?
Opět blogpost pro mou děravou hlavu a pro lidi, kteří si (jako já) nepamatují hlavní volby do .vimrc
. Od teď už (nejen mě) bude stačit na novém počítači udělat jen copy-paste.
Protože Vim používám pořád, je pro mě důležitá jeho správná konfigurace. Ve Vim píšu všechny své články i blogposty. Mimochodem i tento text píšu do Vim. Samozřejmě je mi jasné, že třeba programátoři mají Vim vyladěný mnohem lépe, ale já se teď snažím jednak ukázat svou vlastní konfiguraci a také pomoci začátečníkům s tím nejdůležitějším.
Konfigurace Vim leží v ~/.vimrc
a u mě obsahuje devět hlavních příkazů, které mi nastavují Vim k obrazu mému:
set helplang=cs set ruler set showmode set nocompatible set backspace=2 set spelllang=cs set spell syntax on set fileencodings=utf-8,latin2
Velmi stručný popis jednotlivých řádek: nastaví jazyk na češtinu, zapne zobrazení informací v posledním řádku, zobrazuje zapnutý režim, vypne kompatibilitu s Vi, zapne klasické použití backspace, český slovník překlepů, zapne slovník, zvýrazňování syntaxe, rozpoznání jednotlivých kódování.
Protože píšu obvykle HTML respektive XML, hodí se mi ještě pár maker, která také využívám denně mnohokrát. Především je to o obalování textu různými tagy. Ovládám je v příkazovém režimu a spouštím klávesovou zkratkou ctrl+znak.
Konfigurace vypadá takto:
map ^P I<p>^[A</p>^[jj map ^H I<h1>^[A</h1>^[jj map ^L I<li>^[A</li>^[j map ^B A<br />^[j map ^O I<question>^[A</question>^[jj map ^A I<answer>^[A</answer>^[jj
Opět stručně vysvětlím: Makra se zapisují jako sled kláves, které voláte z příkazového režimu. Znaky se stříškou se píší tak, že nejprve stiskneme ctrl+v a pak kýženou kombinaci. ^P je tedy napsána jako kombinace ctrl+v a ctrl+p. Mimochodem ^[ je ctrl+v a escape.
Jak vidíte, většina maker zapne vkládací režim, vloží tag, vyskočí z vkládacího režimu, skočí na konec řádky, vloží další tag, opět vyskočí z vkládání a posune se o dva řádky (některá jen o jeden) dále. Takto jsem schopen několika málo klávesami otagovat celý článek třeba odstavcovými tagy <p> a </p>. Nebo si jednoduše vyrobit seznam s odrážkami s pomocí <li>.
To je z mého .vimrc
všechno. Pokud vás zajímají další detaily, pak si prostudujte následující zdroje:
Petre, pokud chces napriklad otagovat pouze vybrane casti textu (typicky pri psani stylem "nekonecnych" radku), zkus toto:
vmap <C-I> omaomb<esc>`bi</i><esc>`ai<i><esc>
vmap <C-A> omaomb<esc>`bi</a><esc>`ai<a href=""><esc>
plus samozrejme dalsi kombinace C+pismeno.
A pro praci vecer, kdyz vsichni spi, se jeste hodi "set visualbell" (neba prenastavit terminal, ale vimovske nastaveni je jistejsi)
Nevite nahodou, jestli nejak nejde nastavit, aby vim pri otevreni souboru zjistil, jestli se v nem pro formatovani pouzivaji taby, nebo mezery (pripadne co prevazuje) a nastavil se tak, aby to respektoval? Asi by slo ten soubor prohnat nejakym perlovskym skriptem, ale treba uz ho nekdo vyrobil...
Já vím, že jsme teď v Linuxu, ale používám vim multiplatformně - na několika operačních systémech, mimo jiné i na windows. A podotýkám:
^P - standardizovaná zkratka pro tisk ve Windows
^A - standardtizovaná zkratka pro označit vše v dokumentu ve Windows
Jinak bych také řekl, že zvolit ^P jako zkratku pro makro je mimořádně nešikovné, protože ^P a ^N ve vimu funguje pro automatické doplňování slov.
Ale jinak skvělý článek, velmi ho oceňuji a smekám klobouk před autorem.
nechci rýpat, ale nadpis je scestný (může někoho svést na scestí).
pokud si do svého vimrc člověk uloží Vaše makra systémem copy-paste, nebude mu to fungovat (^[ není escape, pouze tak někdy vypadá, ale jen ve vimu, nedá se to takto zapisovat). mezi parametry vimrc také chybí důležité volby jako incsearch hlsearch ignorecase smartcase autoindent smartindent expandtab smarttab, a tak dále. Čili nadpis bych volil asi jiný, například "Jak jsem si poprvé nastavil .vimrc".
Vybral som par (snad) uzitocnych hlavne vizualnych veci z .vimrc (som zvedavy jak to naformatuje):
"1) zvyraznenie status line - odlisenie command mode a insert mode, naviac nastavi zvyraznenie aktivneho riadku v insert mode. Ta funkcia CulInInsertMode je potrebna aby to fungovalo aj pri prepnuti tabov spravne. Prikazy highlight su nastavenia farbiciek v gui mode a text mode, pripadne si zmente
" highlighting command/insert modes
highlight StatusLine guifg=red guibg=white ctermfg=red ctermbg=white
autocmd! InsertEnter * highlight StatusLine guifg=blue guibg=white ctermfg=green ctermbg=white
autocmd InsertEnter * set cul
autocmd! InsertLeave * highlight StatusLine guifg=red guibg=white ctermfg=red ctermbg=white
autocmd InsertLeave * set nocul
autocmd! WinLeave * set nocul
autocmd! WinEnter * call CulInInsertMode()
" set cursorline in insert mode, not in command mode
function! CulInInsertMode()
if mode()=="i"
set cul
else
set nocul
endif
endfunction
"2) spustanie make prikazu cez F7 a navigovanie cez najdene chyby cez F5/F6; :make nemusi volat nutne 'make', ale aj iny tool/prekladac, viz :help makeprg
" make and navigating through errors
nnoremap <F5> :cN<CR>
nnoremap <F6> :cn<CR>
nnoremap <F7> :make<CR>
"3) oznacovanie Shift+Up/Down/..., Shift+Insert, Shift+Del; tieto typicky nebudu fungovat v terminali, lebo ten ich odchyti na scrolovanie apod.
" Shift-Up/Down switches to line-visual
inoremap <S-Down> <Esc>V
inoremap <S-Up> <Esc>V
vnoremap <S-Down> <Down>
vnoremap <S-Up> <Up>
nnoremap <S-Down> V
nnoremap <S-Up> V
" Shift-Left/Right switches to character-visual
inoremap <S-Left> <Esc>v
inoremap <S-Right> <Esc>v
vnoremap <S-Left> <Left>
vnoremap <S-Right> <Right>
nnoremap <S-Left> v
nnoremap <S-Right> v
" Shift-Home/End switches to character-visual, choosing till EOL
inoremap <S-Home> <Esc>v<Home>
inoremap <S-End> <Esc>v<End><Left>
vnoremap <S-Home> <Home>
vnoremap <S-End> <End><Left>
nnoremap <S-Home> v<Home>
nnoremap <S-End> v<End><Left>
" Ctrl-Insert is copy (yank)
vnoremap <C-Insert> "+y
" Shift-Insert is paste, Shift-Del is cut
vnoremap <S-Insert> <Esc>"+gP
inoremap <S-Insert> <C-R>+
nnoremap <S-Insert> "+gP
vnoremap <S-Del> "+x
"4) Podrobnejsia status line, ukazuje cislo buffera, filetype, encoding, lineendings, poziciu absolute a percenta, modified flag atd.
" Status line setting
set laststatus=2
set statusline=%{&modified?'[+]':'\ \ \ \ '}\
set statusline+=%-3.3n\ " buffer number
set statusline+=%f\ " file name
set statusline+=\[%{strlen(&ft)?&ft:'none'},
set statusline+=%{&encoding},
set statusline+=%{&fileformat}]
set statusline+=%= " right align
set statusline+=%-14.(%l,%c%V%)\ %<%P/%L " offset
Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. GNU/Linuxem a Unixem obecně se zabývá již více než deset let a věnuje se především jeho nasazení v počítačových sítích a bezpečnostní politice. Zde bloguje o Root.cz, Linuxu, internetu a světě kolem sebe.
Přečteno 108 733×
Přečteno 88 698×
Přečteno 71 827×
Přečteno 57 567×
Přečteno 53 963×