Portál AbcLinuxu, 30. dubna 2025 16:53
Co nového nám přináší verze Vim 7.0 vydaná 8. května? V článku najdete základní popis nových funkcí a návod k jejich ovládání.
Tato novinka mě potěšila ze všeho nejvíce. Chceme-li např. otevřít v tabech všechny zdrojové kódy v aktuálním adresáři, stačí zadat:
vim -p *.c *.h
Maximální počet otevřených tabů se nastavuje pomocí:
set tabpagemax=20
Nyní se ukážeme, jak s taby pracovat.
:tabnew
-> otevře nový prázdný tab:tabnew soubor
-> otevře nový tab s definovaným souborem:tabnew +Ex
-> otevře nový tab a v něm spustí interaktivní výběr souborugt
nebo Ctrl+PageDown
-> následující tabgT
nebo Ctrl+PageUp
-> předchozí tab4gt
-> skočí na 4. tab2gT
-> skočí o 2 taby zpětgF
-> otevře v aktuálním tabu soubor na kurzoru:tab sp
-> otevře aktuální okno v novém tabu:tab help version7
-> otevře v novém tabu nápovědu k verzi 7Ctrl+w T
-> osamostatní aktuální okno v nového tabutabm1
-> přesune tab před 1. tabtabo
-> zavře ostatní tabytabc2
-> zavře 2. tabtabdo $s/Bill/kill Bill/g
-> provede nahrazení ve všech tabechV případě, že již nemáme zájem se souborem pracovat, nepoužijeme příkaz pro zavření tabu, ale příkaz pro odstranění bufferu :bd
, který nám zároveň zajistí zavření tabu. Pro uzavření všech tabů a ukončení editoru použijeme :qa
. Chceme-li uzavřít pouze aktuální tab a uložit změny, přijde mi jako nejrychlejší řešení ZZ
.
Z ftp://ftp.vim.org/pub/vim/runtime/spell/ si stáhneme spell soubory, o které máme zájem (cs.iso-8859-2.spl, cs.utf-8.spl, cs.cp1250.spl). A uložíme si je do ~/.vim/spell/
nebo {runtimepath}/spell/
. Soubor se
hledá dle vzoru {runtimepath}/spell/{spelllang}.{encoding}.spl
.
:set spell spelllang=cs
-> zapnutí kontroly českého pravopisu:set nospell
-> vypnutí kontroly pravopisu]s
-> následující chyba[s
-> předchozí chybazg
-> slovo pod kurzorem je správně (ukládá do ~/.vim/spell/{spelllang}.{encoding}.add*
)zG
-> jako předchozí, ale po ukončení Vimu je vše zapomenuto (ukládá do /tmp/v*/*
)zw
-> slovo pod kurzorem je špatnězW
-> jako předchozí, ale po ukončení Vimu je vše zapomenutoz=
-> vypíše možnosti opravy chybného slovaJe k dispozici vyskakovací nabídka s možnostmi pro doplnění; viz obrázek. Jsme-li ve vkládacím režimu, můžeme použít Ctrl+x Ctrl+o
pro doplňování dle použitého jazyka. Např. nám Vim může radit s HTML, C, PHP, SQL atp.
:earlier 10m
-> vrať se do stavu před 10 minutami:later 10m
-> vrať se do stavu po 10 minutách:undolist
-> seznam změng+
-> novějsí stavg-
-> starší stavga
-> vytiskne ASCII hodnotu znaku pod kurzorem a jeho desítkovou, šestnáckovou a osmičkovou hodnotug8
-> vytiskne šestnáctkovou hodnotu znaku pod kurzorem8g8
-> hledá neplatné sekvence UTF-8 bytůTím myslím např. kulaté závorky, závorky vyznačující funkce, cykly, podmínky atp.
:NoMatchParen
-> vypnutí:DoMatchParen
-> zapnutí:hi MatchParen ctermbg=blue guibg=lightblue
-> nastavení barvy pozadí tohoto typu zvýraznění pro barevný terminál a pro GUIProhledává i komprimované soubory (*.gz atp.) a nedělá mu problémy různé kódování.
:cd src
-> nastaví src jako pracovní adresář:vimgrep /vzor/ *.c *.h *.gz
-> v definovaných souborech v pracovním adresáři hledá vzor:1vimgrep /vzor/ *
-> po nalezení první shody ukončí vyhledávání:copen
-> otevře okno s výsledky, na nalezené pozice se přesuneme buď najetím kurzoru a stisknutím klávesy Enter
nebo kliknutím myšiCtrl+w Ctrl+w
-> přepínání mezi okny:cclose
-> zavře okno s výsledky:cp
-> následující nalezená pozice:cn
-> předchozí nalezená poziceVylepšeny možnosti pohybu (asi jako more -> less) v případě, že se výpis příkazu (např. :ls
) nevejde na jednu obrazovku. Více viz :help more-prompt
. V případě, že ukončíme procházení výpisu příkazu, tak si můžeme zobrazit poslední stránku tohoto výpisu g<
.
Nastavení :set virtualedit=onemore
umožní posouvat kurzor o jeden znak za konec řádku.
Nezmínil jsem úplně všechny novinky, takže máte-li zájem o kompletní seznam, zkuste :help version7
.
Nová verze Vimu mě mile překvapila, dočkal jsem se vylepšení, která mi chyběla.
BTW: Stále jsem se vyhýbal GUI verzi a používal výhradně ncurses, ale podpora tabů byla poslední kapička, která mě přiměla začít používat gvim
. V této souvislosti jsem si vytvořil následující aliasy v ~/.bashrc
:
alias vim="gvim --servername INDEX --remote-send '<C-\><C-N>:tabnew<CR>' --remote " alias view="gview --servername INDEX --remote-send '<C-\><C-N>:tabnew<CR>' --remote "
A přidal řádek do ~/.muttrc
:
set editor="gvim --servername INDEX --remote-send '<C-\\><C-N>:tabnew<CR>' --remote-wait"
Nyní po spuštění X provedu i spuštění GVimu:
gvim --servername INDEX
Poté stačí stačí vesele pracovat v terminálu dle zvyku, ale veškerá editace všech souborů a e-mailů probíhá v jedné instanci GVimu.
set completeopts-=menu set iskeyword+=199-255
:he hl-SpellCap :hi SpellCap
diky, to je ono, nenapadlo me, ze na zacatku vety musi byt velke pismenoV češtině je velké písmeno na začátku věty celkem běžné
:he 'fileencodings'
Málem bych zapomněl, při přechodu na novou verzi se začala chovat jinak klávesa BackSpace. Umazávala znaky pouze z aktuálně psaného textu. Např. vkládací režim, pišu text, posunu se o znak doleva a v tuto chvíli již nemohu umazat znak pomocí BackSpace. Řešení:
:set backspace=indent,eol,start
Máš pravdu, ta volba byla v systémovém konfiguráku /usr/share/vim/vimrc
, novéhu Vima jsem instaloval do /usr/local/share/vim/
, ale již jsem tam nevytvořil vimrc
. Raději mám veškeré nastavení v $HOME
, kvůli snadnějšímu přenesení konfigurace prostředí na cizí počítače.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.