Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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 - Tipy, triky a návody

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.


 

Všechny články v sekci
Tipy, triky a návody
Článek pro vás napsal Michal Martinek
Avatar
Uživatelské hodnocení:
7 hlasů
Aktivity