Editor vim - základy

VIM

Editor vim je nejrozšířenější a textový editor v Linuxu. Jeho ovládání je poněkud nezvyklé, ale když se jej naučíte, je práce s ním velice efektivní.

VIM pracuje jak v konzoli, tak existuje jeho grafická podoba gvim. S obojím se pracuje stejně, jen gvim má menu, kde si můžete některé věci naklikat.

Základní módy editoru

VIM se může nacházet v několika módech. Po spuštění editoru se dostanete do příkazového módu, kde stisky klávesnice neprodukují text (jak by jste od textového editoru očekávali), ale reprezentují se jako příkazy. Jedním z příkazů je například i, který změní mód editoru na vkládací mód.

Vkládací mód je ten nejednodušší a nejpřímočařejší mód. Stisknete klávesu a ona se napíše. Zpět do příkazového módu se přepnete pomocí klávesy Escape.

Dalším módem je tzv. ex mód. Ten umožňuje zadávat příkazy editoru ex, na kterém je vim postaven. (Editor ex se vyvinul z editoru ed).
Do ex módu se dostanete z příkazového módu stiskem dvojtečky. Na poslední řádce v editoru v levém rohu uvidíte dvojtečku a můžete zapisovat příkazy.

Krom toho existuje ještě visuální mód, který umožňuje označovat bloky textu a pracovat s nimi. Do toho se dostanete z příkazového módu například stiskem klávesy v.

Základem ovládnutí editoru VIM je pochopení jeho módů (režimů), jak se dostanete z jednoho módu do jiného a co v kterém módu se dá dělat.

Příkazový mód

Pokud spustíte VIM příkazem vim, dostanete se do příkazového módu. Tento mód je pro začátečníky tak trochu jako minové pole. Jakákoliv klávesa může vyvolat nečekanou reakci.

Z vkládacího módu se dostanete do příkazového klávesou Escape.
Z visuálního módu se dostanete do příkazového klávesou v, nebo zuřivým mačkáním Escape.

Příkazový mód se většinou používá pro navigaci (například vyhledávání ukončovacích závorek ve zdrojovém kódu, přechod na první, poslední nebo n-tou řádku, přechod na další odstavec atd), hromadné akce (například smazání 10 řádek, kopírování a nebo přesun řádek), k přechodu do ex a visuálního módu atd.

Toho, co se dá dělat v příkazovém módu je opravdu nepřeberné množství. Pokud nechcete, nemusíte se naučit víc, než bude popsáno v této kapitole. Ale každý příkaz, který se naučíte, vám jen usnadní práci.

Aby vám VIM byl opravdu pomocníkem, musíte ho především používat, aby se vám všechny naučené příkazy dostali tak říkajíc do krve. Pokud s VIMem budete pracovat jen občas, nejspíš si příkazy nikdy pořádně nezapamatujete, jejich hledání vám bude jen zabírat čas, takže pro vás nebude VIM o nic lepší než obyčejný notepad z Windows. (Ale i tak má smysl se s ním naučit pracovat, protože je to prakticky jediný slušný textový editor, který navíc pracuje i v konzoli, který najdete v Linuxu téměř vždy.)

Vkládací mód

Ve vkládacím módu píšete. Nic moc více se o něm nedá říct. Dostanete se do něj z příkazového módu hned několika příkazy: a, A, i, I, o, O, nebo R.
Popis těchto příkazů a čím se liší bude následovat.

Ve vkládacím módu uvidíte na poslední řádce v editoru -- INSERT -- nebo -- REPLACE -- (podle toho, jestli se bude vkládat nový text, nebo se bude přepisovat už existující.

Zpět do příkazového módu se dostanete klávesou Escape.

Visuální mód

Visuální módy existují dva. Do jednoho se dostanete klávesou v, do druhého klávesovou zkratkou CTRL+v. Z prvního utečete znovu pomocí klávesy v, z druhého pomocí CTRL+v, nebo pomocí v přejdete do prvního a druhým v definitivně utečete.

Ve visuálním módu uvidíte na poslední řádce v editoru -- VISUAL --, v druhém případě -- VISUAL BLOCK --.

K čemu je visuální mód potřeba se dozvíte později. Nedočkavci se mohou podívat na video.

Jako většina toho, co se o VIMu budete učit, není potřeba k ničemu. Pouze se na něco hodí :-).

Ex mód

Někteří lidé nerozlišují mezi příkazovým módem a ex módem. Do ex módu se dostanete zadáním dvojtečky v příkazovém režimu, takže to berou jen jako další příkaz z příkazového režimu.

Kvůli své historii a kvůli tomu, že po stisku dvojtečky vidíte dvojtečku a vše další co píšete na posledním řádku, tak to beru (a nejen já) jako další mód VIMu. V zásadě je asi jedno, jak tomu kdo říká, hlavní je, že si rozumíme :-).

Nejzákladnější příkaz ex módu je q (quit). Tím editor opustíte. Ti, co považájí ex mód jen za další příkazy příkazového režimu by asi napsali :q, aby bylo jasnější, že ... jde o ex mód ... :D

Ale vážně, asi je to opravdu čitelnější, méně matoucí a jednodušší, když se ty příkazy píšou i s dvojtečkou, takže to tak budu taky psát. A alespoň nebudu muset opakovat, že se jedná o ex příkaz.

Příkazy ex módu se spustí, poté co je napíšete, klávesou Enter. Klávesou Backspace můžete celý příkaz smazat a když smažete i dvojtečku, dostanete se zpět do příkazového režimu, aniž byste vykonali nějaký ex-příkaz.

Vyhledávání

Když už píši o ex módu, ještě bych měl tak bokem zmínit, že se dá v editoru i vyhledávat. Vyhledávání se začíná zapsáním lomítka / (v příkazovém režimu, ve vkládacím byste napsali jen lomítko, samozřejmě …). Pak zadáte text, který chcete najít a stisknete Enter. Vyhledávání v opačném směru se dělá pomocí otazníku ?.

První příklad

Když už víte, jak editor VIM pracuje, je na čase si jej vyzkoušet.

Řešení problémů

Pokud se dostanete do situace, že nevíte kde jste a co dělat (a to se začátečníkům může stát), pokuste se nejdřív přijít na to, v jakém režimu editoru jste. To vám může napovědět, jak se dostat zpět do režimu, který chcete.

Pokud stále nevíte kde jste a co dělat, zkuste nejdříve zuřivě mačkat Escape. Když to nepomůže, zkuste zadat :q!. To je příkaz, kterým opustíte editor (nebo něco co jste v editoru spustili, jako například nápovědu).

Pořád nic nepomáhá? Tak uspěte editor zkratkou CTRL+z. Editor se uspí a vy se dostanete zpět do shellu. Odtud můžete editor znovu spustit příkazem fg (ale tím si nepomůžete), nebo jej zabít příkazem killall -9 vim (tím ale zabijete všechny spuštěné instance vimu!)

Po takto násilném ukončení programu může zůstat na disku odkládací soubor, se jménem .jmenosouboru.txt.swp (tečka, jméno editovaného souboru a koncovka .swp). Pokud se pokusíte otevřít stejný soubor, který jste editovali, vim vás upozorní že tento odkládací soubor už existuje a zeptá se vás, co chcete udělat. Nejrozumější je většinou buď zkončit (to v případě, že máte soubor otevřený v jiné běžící instanci VIMu), nebo soubor opravit (repair), čímž se do otvíraného souboru promítnou neuložené změny (uložené jen v odkládacím souboru (swapu), ale ne v editovaném souboru).

Pokud se rozhodnete soubor opravit, musíte po ukončení VIMu tak jako tak odkládací soubor smazat ručně (příkazem rm). (Jeden by čekal, že ho VIM smaže, když už ho použil k opravě. Normálně odkládací soubor po ukončení práce maže).

Spuštění VIMu

Editor vim spustíte příkazem vim. Krom toho mu můžete zadat na příkazovou řádku jména souborů, které chcete editovat. (A spousty dalších voleb).

SYNOPSIS

vim [-r] [soubor]
vim [{+[n]|+/search}] [-p] [soubor ...]
view soubor
vimtutor

Příkaz view otevře soubor jen pro čtení (read-only). To je výhodné hlavně u velkých souborů, protože se pro ně nebude dělat (velký) odkládací soubor (swap).
Příkaz vimtutor otevře VIM s výukovým textem (v češtině).

Spusťte si vimtutor. Nebudu zde popisovat to, co je v něm popsáno. Další texty v mém tutoriálu už budou většinou jen tupým seznamem příkazů a různých konfiguračních voleb VIMu. Abyste jim rozuměli, měli byste mít znalosti na úrovni tutoriálu z vimtutor.

OPTIONS

-r
Vypíše seznam souborů, které nebyli korektně ukončeny. Se jménem souboru se pokusí daný soubor otevřít a opravit.
+[n]
Otevře soubor na n-tém řádku. Pokud není n zadáno (jen plus), otevře ho na posledním řádku
+/search
Spustí na prvním řádku obsahujícím řetězec. Řetězec se může dál hledat příkazy n (dopředu) či N (vzad)
-p
Zobrazí záložky souborů

Psaní textu

Přejděte do vkládacího režimu některým z následujících příkazů. Všechny (až na malé r) zapnou vkládací režim, liší se jen tím, kam umístí kurzor.

a
Kurzor se posune za znak, nad kterým je.
i
Kurzor se posune před znak, nad kterým je.
A
Kurzor se pousne na konec řádku.
I
Kurzor se posune na začátek řádku.
o
Vloží se nová řádka pod řádku s kurzorem.
O
Vloží se nová řádka pod nad řádku s kurzorem.
R
Jako i, ale zapne REPLACE mód. Mezi INSERT a REPLACE módem se přepíná klávesou Insert.
r
Tímto znakem se nepřejde do vkládacího režimu. Umožňuje jen změnit jedno písmeno pod kurzorem (třeba rc změní písmeno pod kurzorem na c). Nové písmeno může být libovolný znak, včetně znaku nového řádku.

Až vás přestane bavit psaní, stiskněte Escape pro návrat do příkazového režimu.

Místo Escape můžete použít Ctrl+c.

Všiměte si, že vám stačí znát jen jeden příkaz pro přechod do vkládacího režimu (třeba i). Znalost těch dalších vám jen zpříjemní práci. A tak je to ve VIMu se vším …
Učte se VIM po douškách, nemusíte umět zpaměti hned vše. Ale své znalosti se vytrvale snažte rozšiřovat. Nesmíte ustrnout jen s jedním příkazem, jinak VIM nikdy nedoceníte …

Ukončení VIMu

Nejdříve byste měli uložit změny. K tomu slouží příkaz :w (tedy příkaz w z ex módu).

:w
Uloží buffer (načtený obsah soubor) do otevřeného souboru
:w jmeno.txt
Uloží buffer (načtený obsah souboru) do souboru jmeno.txt. Pokud pracujete jen s bufferem (neotevřeli jste žádný soubor), VIM pracuje nadále se souborem, do kterého jste buffer uložili.
Pokud ale máte otevřený jiný soubor, než do kterého jste buffer zapsali, VIM dále pracuje s aktuálně otevřeným souborem (který zůstává neuložený).
:w! jmeno.txt
Zapíše buffer do souboru jmeno.txt, i když existuje (vykřičník donutí VIM soubor přepsat)

Když je soubor uložen, je možné editor opustit příkazem :q.

Pokud chcete editor opustit a změny neuložit (zahodit), opustíte jej příkazem :q!.

Pokud jste otevřeli více souborů najednou, pak opustíte editor jen za pomoci vykřičníku (:q!), nebo musíte prolistovat i další soubory. Na další soubor se dostanete příkazem :n, resp. :n!, pokud nechcete ukládat změny v aktuálním bufferu.

Příkazy v ex módu můžete (někdy) i zřetězit. Například pro uložení souboru a ukončení editoru stačí zadat :wq, pro uložení souboru a přechod na další soubor :wn atp.

Příkaz ZZ (dvě velké Z) udělá totéž co :wq – zapíše změny a ukončí editor. (Všiměte si, že před ZZ není dvojtečka. Jedná se skutečně o příkaz v příkazovém módu a ne v ex módu).

A to je asi tak vše, co potřebujete do začátku o editoru VIM vědět. Teď už se v Linuxu nemusíte bát editovat žádný textový soubor. Pokud jste si ještě nespustili vimtutor, tak si ho spusťte. V následujících kapitolách budou jen stručně popisovány všelijaké vychytávky. Na internetu najdete spousty dalších návodů a vychytávek pro editor VIM, tak googlete, zkoušejte a učte se. Ono se vám to vrátí.

Než se pustíte do hlubšího zkoumání editoru VIM, možná byste se mohli podívat na editor Emacs.

Ať už se rozhodnete používat jakýkoliv editor, nejdůležitější je stejně umět psát všemi deseti.
Komentář Hlášení chyby
Created: 11.9.2005
Last updated: 13.7.2013
Tato stánka používá ke svému běhu cookies, díky kterým je možné monitorovat, co tu provádíte (ne že bych to bez cookies nezvládl). Také vás tu bude špehovat google analytics. Jestli si myslíte, že je to problém, vypněte si cookies ve vašem prohlížeči, nebo odejděte a už se nevracejte :-). Prohlížením tohoto webu souhlasíte s používáním cookies. Dozvědět se více..