Základy editoru Vim
Vim je velmi mocný nástroj pro editaci textu a lze spustit prakticky všude. Zejména jeho předchůdce vi (Vim je jeho vylepšením) naleznete skoro na všech unixových systémech. Proto je dobré umět alespoň základy jeho ovládání. Program pro své spuštění nepotřebuje grafické prostředí (spustí se v terminálu) a je užitečný třeba při úpravě konfiguračních, LaTeXových či jakýkoliv jiných textových souborů. Není však vhodný jako IDE pro programování. Existují moduly, pomocí kterých je toho možné dosáhnout, ale dle mého názoru je lepší si přenést Vim do IDE, více o tom naleznete na konci.
Vim nebyl napsán tak, aby byl intuitivní, ale aby byl výkonný. Proto je ze začátku těžší se ho naučit, ale po chvíli vám poskytne rychlou a elegantní editaci textu.
Instalace
Vim není nainstalovaný v základu, takže si ho musíte doinstalovat.
Pro Ubuntu/Mint/Debian:
sudo apt-get install -y vim
Spuštění a ukončení programu
Vim spustíte jednoduše z konzole pomocí příkazu vim, kterému můžete přidat jako parametr cestu k editovanému souboru. Pokud daný soubor neexistuje, vytvoří se prázdný. Pokud spustíte vim bez parametru, objeví se vám toto okno, kde nápisy zmizí po napsání jakéhokoliv znaku. Znak ~ symbolizuje neexistující řádek, protože náš soubor je zatím prázdný.
Pro ukončení Vimu stiskněte Esc
a potom napište
:quit a stiskněte Enter
. Taktéž stačí napsat
:q. Jestli jste provedli nějaké změny, Vim vás nepustí a napíše,
že jste neuložili změny. Pokud dané změny nechcete uložit, napište
:q!. Pokud však ano, tak soubor uložíte příkazem :w. Oba
dva příkazy lze spojit do :wq, nebo stisknout ZZ
, což
provede přesně to samé. Avšak pokud se to vimu pořád nelíbí, tak jste
jej pravděpodobně spustili bez cesty k souboru, takže musíte uvést název
(nebo i cestu), pod kterým se má uložit:
:wq ./documents/vim_test.txt
Režimy práce
Vim obsahuje více režimů, každý slouží k provádění jiných úkonů.
- Příkazový režim, nebo také základní režim, je spojovníkem mezi dalšími režimy. V tomto režimu mažete, kopírujete a pohybujete se po textu. A dostáváte se z něj do zbylých dvou režimů.
- Vkládací režim slouží k samotnému psaní textu.
Dostanete se do něj z příkazového režimu zmáčknutím i. Zpět do
příkazového režimu se dostanete pomocí klávesy
Esc
. - Režim ex je pro zadávání příkazů na příkazovém
řádku. Slouží k náročnějším operacím a dostanete se do něj
napsáním : v příkazovém režimu. Po provedení, stisknutí
Enter
, jste zpět v příkazovém režimu. Pokud příkaz nechcete provést, stačí opětEsc
.
Po startu jsme se ocitli v příkazovém režimu a (jak vám možná už
došlo), ex režimu jsme využili při ukončení. Proto si teď vyzkoušíme i
vkládací režim. Spusťte si vim, stiskněte i a napište libovolný
text. Poté stiskněte Esc
a jste zpět v příkazovém režimu. A
začněte zkoušet příkazy, které naleznete níže.
Pohyb po textu
Všechny příkazy platí pro příkazový režim.
Když byl původní vi napsán, ne každý terminál měl šipky na klávesnici. Z tohoto důvodu je základní pohyb po textu nastaven na h j k l (v příkazovém režimu). Samozřejmě už je dnes možné použít i šipky, ale když budete používat hjkl, nemusíte přesouvat ruku na šipky a zase zpět.
- h - doleva (je vlevo)
- j - dolů (vypadá trochu jako šipka dolů)
- k - nahoru
- l - doprava (je vpravo)
Dále je možné použít posun o slovo:
- e - na konec slova
- w - na začátek následujícího slova
- b - na nejbližší začátek slova směrem zpět
A taktéž posuny o větu (věta je úsek, který končí .?!):
- ) - na začátek následující věty
- ( - na nejbližší začátek věty směrem zpět
Mazání
Ve vkládacím režimu můžete smazat předchozí znak pomocí
Backspace
nebo aktuální znak pomocí Delete
, ale v
příkazovém režimu toho můžete mnohem více.
Pro každou operaci v příkazovém režimu platí, že ji jednoduše provedete vícekrát, když před ni napíšete počet provedení. Zkuste si napsat 20l nebo 3w. Díky tomuto se mazání a všechny další operace dají ulehčit.
Pro smazání aktuálního znaku se v příkazovém režimu používá x. Zkuste si jej zadat opět s počtem opakování před ním, třeba 5x. Další možností je použít příkaz d, ke kterému je nutno zadat ještě druhý parametr, jenž označuje, kolik se toho má smazat. Jako tento parametr se použije příkaz pro posun, např.:
- dh - smaže předchozí znak
- de - smaže text do konce slova
- d) - smaže text do konce věty
Rychlé nahrazení v příkazovém režimu
Po zmáčknutí r nahradíte znak pod kurzorem znakem, který
napíšete. Po zmáčknutí R nahrazujete znaky až po smáčknutí
Esc
.
Kopírování
Když smažete nějaký text, tak se uloží do registru a vy ho můžete vložit pomocí příkazu p. Pokud nechcete daný text smazat, ale pouze zkopírovat, tak místo d použijte písmeno y. Kromě d a y jsou i jiné příkazy, které se používají úplně stejně:
- c - smaže text a přepne vás do vkládacího režimu
- > - posune text doprava
- < - posune text doleva
- gu - převede na malá písmena
- gU - převede na velká písmena
Vracení změn zpět
Pokud jste zvyklí na Ctrl-Z
ze svého oblíbeného editoru, tak
se nemusíte bát, i Vim obsahuje tuto funkci. Pro vrácení změn zpět stačí
stisknout u. Vim umožňuje opakované použití a také provedení
změn znovu pomocí Ctrl-R
. Taktéž je možně použít klávesu
U, která vrací zpět všechny změny na daném řádku. Zkuste
použít opakovaně .
Hledání a nahrazování
Hledání se spouští pomocí **, a za lomítko se píše, co chcete v souboru najít. Mezi výsledky se listuje pomocí n (dopředu) a N (dozadu). K nahrazování se používá ex režim ve formě:
:s/to, co chci nahradit/to, čím to chci nahradit
To však změní pouze první výskyt, takže pro všechny výskyty na řádku použijeme:
:s/před/po/g
Pro změnu v celém dokumentu
:%s/před/po/g
Pro změnu mezi řádky:
:1,15s/před/po/g` //místo 1 a 15 dosaďte vlastní čísla řádků
Dodatek
Vkládací režim
Na začátku jsem vás nechtěl mást více možnostmi, jak se dostat do vkládacího režimu. Existují totiž příkazy, pomocí kterých se dostanete na různá místa.
- i - budete psát před kurzor
- a - budete psát za kurzor
- I - na začátek řádku
- A - na konec řádku
- o - vloží řádek za aktuální řádek a budete psát tam
- O - vloží řádek před aktuální řádek a budete psát tam
Také je možné používat toto vkládání s počtem opakování a to
jednoduše tak, že napíšete počet opakování, příkaz pro vkládací
režim, napíšete text a zmáčknete Esc
a je to:
10oUž nikdy nebudu plýtvat křídou Esc
Hodně jsem vás také hodně ošidil o možnosti pohybu kvůli pochopení principu.
Posuny o slovo
- e, E - na konec slova
- w, W - na začátek následujícího slova
- b, B - na nejbližší začátek slova směrem dozadu
e,w,b chápou jako slovo řadu písmen, číslic a podtržítek (19_srpna), nebo řadu jiných neprázdných znaků(-$,.), ale nikdy ne dohromady ("Vím." jsou 2 slova). Zatímco E, W, B berou jako slovo jakoukoliv řadu neprázdných znaků dohromady ("Vím." je jedno slovo).
Posuny o odstavec (konec odstavce je prázdný řádek)
- } - na nejbližší konec odstavce
- { - na nejbližší konec odstavce směrem zpět
Taky lze použít příkazy pro pohyb na řádku
- 0 (nula) - na začátek řádku
- ^ - na první tisknutelný znak řádku
- $ - na konec řádku
Existuje ještě posun po řádku pomocí vyhledávání znaků
- f + znak - na následující znak (prostě stiskneme třeba pro písmeno v fv)
- F + znak - na předchozí znak
- t + znak - před následující znak
- T + znak - za předchozí znak
A poslední je pohyb mezi dvojicí závorek (){}[] a dvojznaků komentářů
/*komentář*/
pomocí %. Když jste na otevíracím znaku,
přemístí vás to na koncový znak a naopak z koncového na otevírací
znak.
Samozřejmě tyto možnosti pohybu je možné použít u modifikátorů jako d,y,c:
- d) - smaže zbytek věty
- d} - smaže zbytek odstavce
- d^ - smaže text do začátku řádku
- d$ - smaže zbytek řádku, proto lze použít taktéž rychlejší příkaz dd
- dfb - smaže text až do následujícího výskytu znaku b
Pár vychytávek na závěr:
- pro opakování minulé editační činnosti stačí stisknout .
- při použití i třeba v modifikátoru d - di{ se smaže vše ve {}, u ( zase v () a u [ si to už určitě domyslíte.
- při použití a třeba v modifikátoru d - daw se smaže celé slovo (a jako all)
- pro rychlé přelétávání je nejlepší
Ctrl-F
o obrazovku dopředu aCtrl-B
zpět. - hledání pomocí / lze použít i s modifikátory (d,c,y), takže d/test smaže test až po test
Pokud se vám ovládání Vimu zalíbilo a přišlo vám to rychlé, užitečné a logické, což se na první seznámení moc často nestává, a chtěli byste použít Vim i u programování, tak se podívejte na Vim plugin pro své IDE. Určitě je najdete pro Netbeans, Eclipse, IDEA, PyCharm a další. Pro procvičení a zapamatování zkuste oficiální tutoriál, který spustíte příkazem vimtutor v příkazovém řádku. Pokud byste chtěli procvičovat Vim i hrou, tak se podívejte na Vim Adventures.