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.
- [c] Potvrďte každé nahrazení.
- [g] Nahraďte všechny výskyty v řádku.
- [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 .