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átoremkoko
. 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 !lsrespektive (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.
© 2016 Pavel Satrapa