Jak najít a nahradit text ve Vim na Linuxu

vim je jedním z nejpopulárnějších editorů souborů v Linuxu. Část popularity je způsobena režimem příkazového řádku vim, který umožňuje uživatelům, zejména vývojářům softwaru a pokročilým uživatelům, optimalizovat čas pro operace úpravy souborů.

V tomto článku uvidíme, jak najít a nahradit text v vim režim příkazového řádku.

Nejprve otevřeme textový soubor ve vimu:

vim test.txt

Vim funguje v různých režimech. Dva nejdůležitější režimy jsou výše zmíněný příkazový režim a druhý je režim vkládání, který se používá k úpravě obsahu souboru.

Ve výchozím nastavení, když je soubor otevřen, vim pracuje v příkazovém režimu. Můžete stisknout i přejděte do režimu vkládání.

V příkazovém režimu můžete přímo začít psát příkazy vim; zobrazují se ve spodní části terminálu. Tato spodní část funguje jako integrovaný příkazový řádek ve vimu.

Chcete-li vyhledat řetězec, zadejte zpětné lomítko / následovaný řetězcem, který má být prohledán.

Například: /pes

Jak je vidět výše, přesune kurzor na další výskyt řetězce z pozice, kde je umístěn kurzor. Kurzor byl umístěn na řetězec hnědý jak je znázorněno na předchozím obrázku. Chcete-li najít další výskyty, stiskněte n. Po posledním výskytu se vrátí na první a vydá zprávu „vyhledat hit DOLE, pokračování nahoře“.

Chcete-li vyhledat řetězec se speciálním znakem, nebo například znaky jako plus (+) nebo mezera před znakem s lomítkem:

Například: /C\+

Chcete-li najít a nahradit výskyt prvního řetězce na řádku, umístíme kurzor na tento řádek a použijeme následující příkaz:

Například: :s/pes/tygr

Jak můžete vidět na obrázku výše, třetí řádek, kde je umístěn kurzor, slovo Pes ha byl nahrazen tygr jak je uvedeno v příkazu.

Chcete-li najít a nahradit všechny výskyty řetězce na řádku, použití /G na konci.

Například: :s/kočka/pes/g

Chcete-li najít a nahradit všechny výskyty globálně, používáme %s místo pouze s:

Například: :%s/pes/myš

Pokud se řetězec skládá ze speciálních znaků, jako je mezera, může mu předcházet lomítko, stejně jako dříve.

? Na zdraví!