☰ menu
Pavel Satrapa

Spolupráce se soubory a programy

Nejzákladnější základy práce se soubory jsem již prozradil. Chcete-li některý načíst do editoru, zadáte jej jako parametr při spuštění vim. Jestliže snad soubor uvedeného jména dosud neexistuje, bude při uložení vytvořen.

Pokud se ukládání týče, poslouží k němu příkaz :w. Chcete-li zároveň ukončit editor, použijte příkaz :wq nebo rychlejší klávesovou kombinaci ZZ.

Jemnosti načítání souborů

Pokud během práce na jednom souboru zatoužíte po editaci jiného, nemusíte vim ukončovat a znovu startovat. Stačí uložit aktuální stav zpracovávaného souboru a poté zadat :edit jméno_souboru. Příkaz lze zkrátit i na pouhé :e.

Lze dokonce pracovat se skupinou textů. Pokud při startu programu zadáte v parametrech více než jedno jméno, vim otevře první z uvedených souborů, ale ostatní si pamatuje. Když se pak chcete posunout na následující soubor, použijte příkaz :n. Naproti tomu :N vás vrací k předchozímu.

Příklad:

Řekněme, že v aktuálním adresáři máte skupinu zdrojových textů v jazyku C a chcete v nich nahradit identifikátor kuku identifikátorem koko. Pokud se k danému účelu rozhodnete použít vim (vhodnější by asi byl sed nebo Perl), můžete postupovat následovně:

Spustíte vim pro všechny zdrojové texty

vim *.c

První z nich uvidíte na obrazovce. Provedete záměnu identifikátorů příkazem :%s/\<kuku\>/koko/g, text uložíte (:w) a přejdete na další (:n). Tyto dva příkazy lze spojit i do jednoho (:wn). A tak dále pořád dokola. Při opakování příkazů samozřejmě s výhodou využijete historii příkazového řádku, takže budete mačkat pouze dvojtečku a šipku nahoru.

Nevýhodou těchto příkazů je, že při posunu na následující či předchozí soubor se editor ocitne vždy znovu ve výchozí pozici. Kurzor tedy přesune na začátek textu. V řadě situací by se však více hodilo, aby se editor vracel do souboru na pozici, z níž jste jej opustili. Takové chování nabízí rozdělení obrazovky na okna a paralelní editace několika textů. Ta ale patří až do části pro pokročilé.

Pokud neuvedete absolutní cestu k souboru, bude načten z aktuálního adresáře. Jeho jméno vám sdělí příkaz :pwd (Print Working Directory, znalcům Unixu jistě bude povědomý). Chcete-li jej změnit, použijte :cd adresář.

Zajímavou možností je klávesová kombinace gf. Po jejím použití přejde vim k editaci souboru, jehož jméno se nachází pod kurzorem (kurzor nemusí stát na začátku jména). Díky této schopnosti můžete snadno a rychle přejít k editaci vkládaného souboru či WWW stránky, na niž vede odkaz ze stránky právě editované.

Vkládání do textu

Doposud jsem se zabýval pouze možností změnit editovaný soubor. Občas však potřebujete do zpracovávaného textu vložit obsah určitého souboru. To zařídí příkaz :r jméno_souboru. Vloží se pod řádek s kurzorem.

Příkaz :r však může posloužit i ke spuštění programu. Jeho výstup pak bude vložen do editovaného textu stejně, jako výše zmiňovaný obsah souboru. Skutečnost, že požadujete spuštění programu, nikoli načtení souboru, vyznačíte vykřičníkem. Příkaz pak má tvar :r !příkaz.

Příklad:

Obsah aktuálního adresáře vložíte do textu příkazem

:r !ls

respektive (v operačních systémech firmy Microsoft)

:r !dir

Ukládání na disk

Základním příkazem pro zápis je samozřejmě :w, který uloží obsah editovaného souboru. Můžete jej zapsat i pod novým jménem, pokud použijete :w jméno_souboru. Když se vyskytnou problémy (soubor je chráněn proti zápisu nebo „vytvářený“ soubor již existuje), editor odmítne akci provést. Ovšem zároveň vás upozorní na možnost připojit k příkazu vykřičník, kterým si můžete jeho provedení vynutit. Například :w! zapíše aktuální obsah i do souboru, který je určen pouze pro čtení. To samozřejmě bude fungovat pouze v případě, že máte oprávnění k tomu příslušnou ochranu vypnout.

Posledním režimem zápisu je :w >>jméno_souboru. Zde se editovaný text připojí na konec uvedeného souboru.

Speciálním případem „uložení“ textu je, když jej předáte ke zpracování jinému programu. Také k tomuto účelu slouží příkaz :w, tentokrát ve tvaru :w !program. Editor spustí uvedený program a prostřednictvím roury pošle editovaný text do jeho standardního vstupu. Výsledek pak uvidíte na obrazovce.

Příklad:

Chcete-li si nechat příkazem wc spočítat písmena, slova a řádky v editovaném textu, použijte

:w !wc

Všimněte si dvojí úlohy vykřičníku. Pokud se vyskytne na konci názvu příkazu, označuje jeho důraznější variantu. Například :w! pokus uloží editovaný text do souboru pokus, přestože existuje. Jestliže však vykřičník použijete na začátku slova, signalizuje spuštění programu. Proto :w !pokus předá editovaný text do standardního vstupu programu pokus.

Jiné příkazy

Kromě výše zmiňovaných způsobů spolupráce s programy, kdy vkládáte do textu jejich výstup nebo naopak učiníte text jejich vstupem, lze též odskočit z editace k jinému programu. To lze provést jednoúčelově příkazem :!příkaz. Opět se objevuje vykřičník na začátku slova – tedy jedná se o spuštění programu. vim jej provede, zobrazí výsledek a vrátí se k editaci textu.

Chcete-li si udělat delší výlet, použijte :sh. Vyvolá interpret příkazů, v němž můžete dělat, co se vám zlíbí. Když jej později ukončíte (na většinu interpretů zabírá příkaz exit), vrátíte se zpět do vim.