Základy editoru Vim

Linux a UNIX Tipy a triky 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/De­bian:

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ý.

vim uvítací obrazovka

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ět Esc.

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 a Ctrl-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.


 

  Aktivity (2)

Článek pro vás napsal Michal Martinek
Avatar

Jak se ti líbí článek?
Celkem (6 hlasů) :
4.833334.833334.833334.833334.83333


 


Miniatura
Předchozí článek
Tipy a triky - gedit
Miniatura
Všechny články v sekci
Tipy, triky a návody
Miniatura
Následující článek
Inštalácia SteamCMD

 

 

Komentáře
Zobrazit starší komentáře (5)

Avatar
Michal Žůrek (misaz):

byl tu tak dlouho a nikdy ho nenapsal. Asi proto že to jeho už z Vimem nemá moc společného. On si ho celý přeprogramoval.

Odpovědět  +3 21.8.2014 20:03
Nesnáším {}, proto se jim vyhýbám.
Avatar
Jiří Gracík
Redaktor
Avatar
Jiří Gracík:

Asi tak. A za názor autora, že Vim není vhodný jako IDE, by mu ukousnul nejspíš hlavu :D

Odpovědět  +4 21.8.2014 20:17
Creating websites is awesome till you see the result in another browser ...
Avatar
Adam Ježek
Tým ITnetwork
Avatar
Adam Ježek:

Co? Ani sem nějak nepostřeh, kdy zhruba odešel?

Odpovědět 21.8.2014 20:28
Programátor dělá co může. Počítač co chce. | Pokud mi dáš mínus, tak prosim, napiš proč!
Avatar
GiXi
Člen
Avatar
Odpovídá na Adam Ježek
GiXi:

Tak půl roku? Nějak se hádal s sdracem nebo tk něco udělal i topic o tom nevím jestli ještě existuje

Odpovědět 21.8.2014 20:36
‘I am the one who knocks.’ Heisenberg
Avatar
Adam Ježek
Tým ITnetwork
Avatar
Odpovídá na GiXi
Adam Ježek:

Hm, čas na to probudit se :D Nepamatuješ si náhodou něco z názvu, zkusil bych zapátrat.

Odpovědět 21.8.2014 20:38
Programátor dělá co může. Počítač co chce. | Pokud mi dáš mínus, tak prosim, napiš proč!
Avatar
Old Account
Člen
Avatar
Odpovídá na Jiří Gracík
Old Account:

Kit mal sice niekedy svojske nazory, no nemozno popriet to, ze bol jeden z najskusenejsich a najaktivnejsich vyvojarov v tejto komunite.

Odpovědět 21.8.2014 20:39
"If you keep your eye on the profit, you’re going to skimp on the product. But if you focus on making really gre...
Avatar
tomisoka
Redaktor
Avatar
Odpovídá na Adam Ježek
tomisoka:

http://www.itnetwork.cz/…309ffa4d7fd6
ale moc tam toho už není...

Editováno 21.8.2014 20:45
 
Odpovědět  +2 21.8.2014 20:44
Avatar
GiXi
Člen
Avatar
Odpovídá na tomisoka
GiXi:

Dík aspoň vím k čemu je aura :DD

Odpovědět 21.8.2014 20:55
‘I am the one who knocks.’ Heisenberg
Avatar
Adam Ježek
Tým ITnetwork
Avatar
Odpovídá na tomisoka
Adam Ježek:

Díky. Mě teda Kit připadal poměrně normální, nikdy jsem proti němu nic neměl. Asi jsem tu nějak usnul když to začalo :D

Odpovědět  +3 21.8.2014 21:06
Programátor dělá co může. Počítač co chce. | Pokud mi dáš mínus, tak prosim, napiš proč!
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na Old Account
Jiří Gracík:

Těžko říct jak se zkušenostmi, nicméně aktivní byl opravdu asi nejvíc, to mu rozhodně nikdo nebere :)

Odpovědět 22.8.2014 7:14
Creating websites is awesome till you see the result in another browser ...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 15. Zobrazit vše