GNU/Linux >> Znalost Linux >  >> Linux

Editor Vi a Vim:12 účinných příkladů hledání a nahrazování


Foto s laskavým svolením:B Zedan

Tento článek je součástí probíhající série Vi / Vim Tipy a triky. Vim je běžně uváděn jako textový editor, nikoli jako tvůrce textu. proč? Protože trávíme spoustu času úpravou existujícího textu než vytvářením textu nového. Při úpravách textu se substituce textu/vzorů stávají důležitou součástí.

V tomto článku se podíváme na to, jak provádět základní i pokročilé funkce nahrazování textu a vzorů v Editoru Vi a Vim . Tyto funkce jsou vysvětleny pomocí 12 velmi praktických a výkonných příkladů nahrazování textu .

Syntaxe substituce textu v editoru vim:

:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]


Následují tři možné příznaky.

  1. [c] Potvrďte každé nahrazení.
  2. [g] Nahraďte všechny výskyty v řádku.
  3. [i] U vzoru ignorujte velká a malá písmena.

Příklad 1. Nahraďte všechny výskyty textu jiným textem v celém souboru

Toto je základní základní použití substituce textu v editoru Vi. Pokud chcete, aby byl určitý text nahrazen jiným textem v celém souboru, můžete použít následující sekvenci.

:%s/old-text/new-text/g

  • %s – specifikuje všechny řádky. Zadání rozsahu jako „%“ znamená provedení náhrady v celém souboru.
  • g – určuje všechny výskyty v řádku. Pomocí příznaku „g“ můžete nahradit celý řádek. Pokud tento příznak „g“ není použit, bude nahrazen pouze první výskyt v řádku.

Příklad 2. Nahrazení textu jiným textem v rámci jednoho řádku

Když chcete, aby byl určitý text nahrazen jiným textem v rámci jednoho řádku bez ohledu na velikost písmen. Pokud nezadáte žádný rozsah, znamená to, že provedete náhradu pouze v aktuálním řádku. Pomocí příznaku „i“ můžete změnit hledaný text tak, aby nerozlišoval malá a velká písmena.

:s/I/We/gi

Příklad 3. Náhrada textu jiným textem v rozsahu řádků

Pomocí rozsahu můžete vytvořit pouze rozsah řádku, který má být ovlivněn substitucí. Zadáním 1, 10 jako prostředku rozsahu provádějte substituci pouze v řádcích 1 – 10.

:1,10s/helo/hello/g

Příklad 4. Nahrazení textu jiným textem vizuálním výběrem řádků

Můžete také vybrat konkrétní čáry vizuálním výběrem těchto čar. Stiskněte CTRL + V v příkazovém režimu, pomocí navigačních kláves vyberte část souboru, kterou chcete nahradit. Stiskněte ':', které se automaticky vytvoří jako :'<,'> Potom můžete použít normální náhradu jako

:'<,'>s/helo/hello/g

Příklad 5. Nahrazení textu jiným textem pouze na 1. X počtu řádků

Použití počtu v substituci, Pokud zadáte počet N v substituci, znamená to, že provedete substituci v N řádcích od aktuální pozice kurzoru. proveďte substituci ve 4 řádcích od aktuálního řádku.

:s/helo/hello/g 4

Příklad 6. Nahraďte pouze celé slovo, nikoli částečnou shodu

Předpokládejme, že v níže uvedeném původním textu chcete změnit pouze celé slovo „jeho“ na „ona“. Pokud provedete standardní substituci, kromě změny jeho na ji se také změní This na Ther, jak je ukázáno níže.

Standardní náhrada

Original Text: This is his idea

:s/his/her/g

Translated Text: Ther is her idea

Záměna celého slova

Original Text: This is his idea

:s/\<his\>/her/

Translated Text: This is her idea

Poznámka: :Měli byste slovo uzavřít pomocí , což přinutí substituci hledat pouze celé slovo a nikoli částečnou shodu.

Příklad 7. Nahraďte slovo1 nebo slovo2 novým slovem pomocí regulárního výrazu

V následujícím příkladu přeloží všechny výskyty buď good nebo nice nahradí úžasné.

Original Text: Linux is good. Life is nice.

:%s/\(good\|nice\)/awesome/g

Translated Text: Linux is awesome. Life is awesome.


Můžete také provést náhradu zadáním regulárního výrazu. Následující příklad provede nahrazení hej nebo ahoj za hai. Upozorňujeme, že to nenahrazuje slova „oni“, „toto“.

:%s/\<\(hey\|hi\)\>/hai/g

  • \<– hranice slova.
  • \| – „logické nebo“ (v tomto případě hej nebo ahoj)

Příklad 8. Interaktivní hledání a nahrazení v editoru Vim

Interaktivní hledání a nahrazování můžete provádět pomocí příznaku „c“ v náhražce, který vás požádá o potvrzení provedení náhrady nebo její přeskočení, jak je vysvětleno níže. V tomto příkladu editor Vim globálně najde slovo „úžasný“ a nahradí ho výrazem „úžasný“. Výměnu však provede pouze na základě vašeho zadání, jak je vysvětleno níže.

:%s/awesome/wonderful/gc

replace with wonderful (y/n/a/q/l/^E/^Y)?
  • y – Nahradí aktuálně zvýrazněné slovo. Po jeho nahrazení se automaticky zvýrazní další slovo, které odpovídá vyhledávacímu vzoru
  • n – Nenahradí aktuálně zvýrazněné slovo. Automaticky však zvýrazní další slovo, které odpovídá vyhledávacímu vzoru
  • a – Automaticky nahradí všechna zvýrazněná slova, která odpovídala kritériím vyhledávání.
  • l – Nahradí pouze aktuálně zvýrazněné slovo a ukončí hledání a nahrazování.

Příklad 9. Nahrazení všech řádků číslem řádku.

Když řetězec začíná „\=“, měl by být vyhodnocen jako výraz. Pomocí funkce ‚řádek‘ můžeme získat aktuální číslo řádku. Kombinací obou funkcí provede substituce číslování všech řádků.

:%s/^/\=line(".") . ". "/g


Poznámka: To se liší od „:set number“, kde se do souboru nezapisují čísla řádků. Ale když použijete toto nahrazení, zpřístupníte tato čísla řádků v souboru trvale.

Příklad 10. Nahrazení speciálního znaku jeho ekvivalentní hodnotou.

Nahrazení ~ hodnotou proměnné $HOME.

Original Text: Current file path is ~/test/

:%s!\~!\= expand($HOME)!g

Translated Text: Current file path is /home/ramesh/test/

Pomocí funkce expand můžete použít všechny dostupné předdefinované a uživatelem definované proměnné.

Příklad 11. Změňte pořadové číslo v číslovaném seznamu při vkládání nové položky

Předpokládejme, že máte v textovém souboru očíslovaný seznam jako je následující. V tomto příkladu předpokládejme, že chcete přidat nový řádek za článek 2. Za tímto účelem byste měli odpovídajícím způsobem změnit počet všech ostatních článků.

vi / vim tips & tricks series
Article 1: Vi and Vim Editor: 3 Steps To Enable Thesaurus Option
Article 2: Vim Autocommand: 3 Steps to Add Custom Header To Your File
Article 3: 5 Awesome Examples For Automatic Word Completion Using Ctrl-X
Article 4: Vi and Vim Macro Tutorial: How To Record and Play
Article 5: Tutorial: Make Vim as Your C/C++ IDE Using c.vim Plugin
Article 6: How To Add Bookmarks Inside Vim Editor
Article 7: Make Vim as Your Bash-IDE Using bash-support Plugin
Article 8: 3 Powerful Musketeers Of Vim Editor ? Macro, Mark and Map
Article 9: 8 Essential Vim Editor Navigation Fundamentals
Article 10: Vim Editor: How to Correct Spelling Mistakes Automatically
Article 11: Transfer the Power of Vim Editor to Thunderbird for Email
Article 12: Convert Vim Editor to Beautiful Source Code Browser


3. článek „Udělejte z Vimu jako své Perl IDE pomocí pluginu perl-support.vim“ jsme minuli. Takže když to chcete
přidat, pak chcete změnit „článek 3“ na „článek 4“, „článek 4“ na „článek 5“ až na „článek 12“ na „článek 13“.

Toho lze dosáhnout následujícím příkazem substituce vim.

:4,$s/\d\+/\=submatch(0) + 1/

  • Rozsah:4,$ – 4. řádek po poslední řádek.
  • Vzor pro vyhledávání – \d\+ – sekvence číslic
  • Vzor k nahrazení – \=submatch(0) + 1 – získá odpovídající vzor a přidá k němu 1.
  • Příznak – protože neexistuje žádný příznak, ve výchozím nastavení nahrazuje pouze první výskyt.


Po provedení náhradního příkazu bude soubor vypadat takto, kam můžete
přidat 3. článek.

vi / vim tips & tricks series
Article 1: Vi and Vim Editor: 3 Steps To Enable Thesaurus Option
Article 2: Vim Autocommand: 3 Steps to Add Custom Header To Your File
Article 4: 5 Awesome Examples For Automatic Word Completion Using Ctrl-X
Article 5: Vi and Vim Macro Tutorial: How To Record and Play
Article 6: Tutorial: Make Vim as Your C/C++ IDE Using c.vim Plugin
Article 7: How To Add Bookmarks Inside Vim Editor
Article 8: Make Vim as Your Bash-IDE Using bash-support Plugin
Article 9: 3 Powerful Musketeers Of Vim Editor ? Macro, Mark and Map
Article 10: 8 Essential Vim Editor Navigation Fundamentals
Article 11: Vim Editor: How to Correct Spelling Mistakes Automatically
Article 12: Transfer the Power of Vim Editor to Thunderbird for Email
Article 13: Convert Vim Editor to Beautiful Source Code Browser

Poznámka:Zkontrolujte, že substituce změnila 3 na 4, 4 na 5 a tak dále. Nyní můžeme přidat nový řádek, ve kterém je uveden jako článek 3, a není třeba provádět žádné ruční změny.

Příklad 12. Nahrazení začátků vět velkými písmeny. (tj. v názvu celého dokumentu).

Při formátování dokumentu je také důležité, aby byl název velký. Lze to snadno provést pomocí substituce.

:%s/\.\s*\w/\=toupper(submatch(0))/g

  • \.\s*\w – Vzor vyhledávání – doslovný . ( tečka ) následovaná nulou nebo více mezerami a znakem slova.
  • toupper – převede daný text na velká písmena.
  • submatch(0) – vrátí odpovídající vzor.

Text před nahrazením:

Lot of vi/vim tips and tricks are available at thegeekstuff.com. reading
these articles will make you very productive. following activities can be
done very easily using vim editor.
        a. source code walk through,
        b. record and play command executions,
        c. making the vim editor as ide for several languages,
        d. and several other @ vi/vim tips & tricks.

Text po nahrazení (změny jsou vyznačeny tučně)

Lot of vi/vim tips and tricks are available at thegeekstuff.com. Reading
these articles will make you very productive. Following activities can be
done very easily using vim editor.
        a. Source code walk through,
        b. Record and play command executions,
        c. Making the vim editor as ide for several languages,
        d. And several other @ vi/vim tips & tricks.

Doporučená četba

Vim 101 Hacks, od Rameshe Natarajan . Jsem feťák příkazového řádku. Takže jsem přirozeně velkým fanouškem editorů Vi a Vim. Před několika lety, když jsem psal hodně kódu C na Linuxu, jsem četl všechny dostupné tipy a triky editoru Vim. Na základě mých zkušeností s editorem Vim jsem napsal e-knihu Vim 101 Hacks, která obsahuje 101 praktických příkladů různých pokročilých funkcí Vim, díky nimž budete v editoru Vim rychlý a produktivní. I když používáte editory Vi a Vim několik let a nečetli jste tuto knihu, udělejte si laskavost a přečtěte si tuto knihu. Budete ohromeni možnostmi editoru Vim.

Úžasné články editoru Vim

Následuje několik skvělých návodů editoru Vi / Vim které by vám mohly pomoci.

  • Výukový program makra Vi a Vim:Jak nahrávat a přehrávat
  • Turbocharge prohlížeč Firefox s funkcí Vim Editor pomocí doplňku Vimperator
  • Výukový program:Udělejte z Vimu své IDE C/C++ pomocí pluginu c.vim
  • Převeďte Vim Editor na krásný prohlížeč zdrojového kódu pro jakýkoli programovací jazyk

Poznámka: Přihlaste se k odběru The Geek Stuff a nenechte si ujít žádné budoucí tipy a triky editorů Vi a Vim .


Linux
  1. Vysvětlení rozdílů mezi textovými editory Vi a Vim

  2. Průvodce textovým editorem ViM 101

  3. Použití sed k nalezení a nahrazení textových souborů v Linuxu

  1. Použití příkazů Sed,ex a perl k vyhledání a nahrazení textu v Linuxu

  2. Pomocí „sed“ najít a nahradit?

  3. vim výukový program s příklady příkazů

  1. Textový editor Xed – náhrada za Gedit a Pluma

  2. ReText – výkonný textový editor pro Markdown a reStructuredText

  3. Příklady manipulace s bashovým řetězcem – délka, podřetězec, najít a nahradit