☰ menu
Pavel Satrapa

Editor příkazového řádku

Často se vám stane, že byste chtěli znovu použít některý z předchozích Ex-příkazů. Nebo jej lehce upravit. Zejména při ladění složitějších nahrazovacích příkazů je taková potřeba takřka bytostná. vim nabízí pomocnou ruku.

Má totiž vestavěn editor příkazového řádku. Chová se tak, jak jsme u podobných nástrojů zvyklí – umí vyvolávat dříve používané příkazy, dovolí vám po nich šmejdit kurzorem a upravovat je a dokoce dovede i doplňovat názvy souborů či jiných objektů.

Základními nástroji pro pohyb v historii příkazů jsou klávesy [šipka nahoru] a [šipka dolů]. Jejich prostřednictvím můžete vyvolávat starší či novější příkazy. Kapacita historie je dána volbou history. Například příkazem :set history=50 nařídíte, aby si editor pamatoval padesát příkazů.

Pokud napíšete začátek příkazu a pak stisknete [šipku nahoru], bude vim nabízet jen ty zapamatované příkazy, které začínají vámi zadaným řetězcem. Tím lze putování historií podstatně urychlit.

Příklad:

Řekněme, že konvertujete skupinu souborů z textového formátu MS DOSu do Unixu a nemáte po ruce nic vhodnějšího, než vim. Klasickým postupem je spustit vim *.txt a pro každý ze souborů pak provést trojici příkazů

:set fileformat=unix
:w
:n

U prvního souboru je budete muset vypsat, ale u dalších pak stačí již pouhá sekvence :s[šipka nahoru] a na příkazovém řádku se objeví celý příkaz :set fileformat=unix. Stejného výsledku dosáhnete trojím stisknutím klávesy [šipka nahoru].

V rámci řádku se pak můžete pohybovat kurzorovými klávesami [doleva] a [doprava]. Chování editoru připomíná vkládací režim. Píšete-li viditelné znaky, vsouvají se do řádku, [Backspace] maže znak před kurzorem atd. atp.

Kromě příkazového řádku můžete stejný editor používat i pro vyhledávané vzory, výrazy a vstupní řádky funkce input(). Každá z těchto čtyř kategorií má svou vlastní historii a nemíchá se s ostatními.

Doplňování

Moc milou věcičkou je automatické doplňování názvů souborů, voleb a dalších konstrukcí. Nebudu dlouho chodit kolem horké kaše a namlsám vás příkladem.

Příklad:

Zadejte :e (za „e“ je mezera) a stiskněte [Tab]. Editor pípne a nabídne vám jméno prvního souboru z aktuálního adresáře. Když [Tab] opakujete, nabízí další a další soubory.

Klávesa [Tab] totiž aktivuje automatické doplnění právě rozepsaného slova. vim dovede doplňovat

Chová se inteligentně – doplňované objekty vybírá podle pozice, kde se momentálně nachází kurzor. Například ve výše uvedeném příkladu byl kurzor na pozici parametru příkazu :e, kterým má být jméno souboru. Proto se nabízely názvy souborů. Kdybyste místo :e zahájili příkaz :set , nabízel by názvy voleb.

Když zadáte počáteční znaky, nabízí editor pouze jména, která začínají uvedeným řetězcem. Vyhovuje-li jediné, bude doplněno. Jestliže existuje několik vyhovujících alternativ, vim pípne (aby upozornil, že by cosi mohlo drhnout) a doplní první vyhovující jméno. Pokud vám nevyhovuje, stiskněte [Tab] znovu a dostanete další. A tak dále pořád dokola.

Klávesou Ctrl-D si vypíšete všechna vyhovující jména, takže budete mít přehled. Pomocí Ctrl-N a Ctrl-P můžete poskakovat mezi jednotlivými možnostmi.

Nechat si postupně nabízet možnosti je příjemné, ale podle mého soudu je ještě příjemnější vybírat je z menu. To zajistí konfigurační příkaz :set wildmenu. Místo aby jednotlivé varianty zobrazoval postupně, rovnou z nich vytvoří vodorovné menu nad příkazovým řadkem – asi takto:

ukázka menu souborů

Automatické doplňování ve skutečnosti není pevně svázáno s klávesou [Tab]. Například původní editor vi k tomuto účelu používal Ctrl-E a stejně se chová i vim, pokud pracuje v (implicitním) kompatibilním režimu. Klávesu, která má aktivovat automatické doplnění určuje volba wildchar. Například po provedení :set wildchar=<F5> bude doplňovat funkční klávesa [F5].