GNU/Linux >> Linux Esercitazione >  >> Linux

Vi e Vim Editor:12 potenti esempi di ricerca e sostituzione


Foto per gentile concessione:B Zedan

Questo articolo fa parte della serie in corso di Vi / Vim Tips and Tricks. Vim è comunemente menzionato come editor di testo, non come creatore di testo. Come mai ? Perché dedichiamo molto tempo alla modifica di un testo esistente piuttosto che alla creazione di nuovo testo. Nella modifica del testo, le sostituzioni di testo/motivi diventano una parte vitale.

In questo articolo, esaminiamo come eseguire le funzioni di sostituzione di testo e pattern sia di base che avanzate in Vi e Vim Editor . Queste caratteristiche sono spiegate utilizzando 12 esempi molto pratici e potenti di sostituzione del testo .

Sintassi della sostituzione del testo all'interno di vim editor:

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


Di seguito sono riportati tre possibili flag.

  1. [c] Conferma ogni sostituzione.
  2. [g] Sostituisci tutte le occorrenze nella riga.
  3. [i] Ignora maiuscole e minuscole per il modello.

Esempio 1. Sostituisci tutte le occorrenze di un testo con un altro testo nell'intero file

Questo è l'uso fondamentale di base della sostituzione del testo all'interno dell'editor Vi. Quando desideri sostituire un testo specifico con un altro testo nell'intero file, puoi utilizzare la seguente sequenza.

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

  • %s – specifica tutte le righe. Specificare l'intervallo come '%' significa eseguire la sostituzione nell'intero file.
  • g – specifica tutte le occorrenze nella riga. Con il flag 'g' è possibile sostituire l'intera riga. Se questo flag 'g' non viene utilizzato, verrà sostituita solo la prima occorrenza nella riga.

Esempio 2. Sostituzione di un testo con un altro testo all'interno di una singola riga

Quando si desidera sostituire un testo specifico con un altro testo all'interno di una singola riga senza distinzione tra maiuscole e minuscole. Specificare nessun intervallo significa eseguire la sostituzione solo nella riga corrente. Con il flag "i", puoi fare in modo che il testo di ricerca sostitutivo non faccia distinzione tra maiuscole e minuscole.

:s/I/We/gi

Esempio 3. Sostituzione di un testo con un altro testo entro un intervallo di righe

Con l'intervallo, puoi fare in modo che solo un intervallo di linee venga influenzato nella sostituzione. Specificare 1, 10 come intervallo significa eseguire la sostituzione solo nelle righe 1 – 10.

:1,10s/helo/hello/g

Esempio 4. Sostituzione di un testo con un altro testo mediante selezione visiva di righe

Puoi anche selezionare linee specifiche selezionando visivamente quelle linee. Premere CTRL + V in modalità comando, utilizzare i tasti di navigazione per selezionare la parte del file che si desidera sostituire. Premi ':' che si formerà automaticamente come :'<,'> Quindi puoi usare il normale sostituto come

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

Esempio 5. Sostituzione di un testo con un altro testo solo il 1° X numero di righe

Usando il conteggio nella sostituzione, se si specifica il conteggio N nella sostituzione, significa eseguire la sostituzione in N righe dalla posizione corrente del cursore. fai la sostituzione in 4 righe dalla riga corrente.

:s/helo/hello/g 4

Esempio 6. Sostituisci solo la parola intera e non la corrispondenza parziale

Supponiamo che tu voglia cambiare solo l'intera parola "suo" in "lei" nel testo originale menzionato di seguito. Se fai la sostituzione standard, oltre a cambiare la sua con lei, cambierà anche This in Ther come mostrato di seguito.

Sostituzione standard

Original Text: This is his idea

:s/his/her/g

Translated Text: Ther is her idea

Sostituzione di intere parole

Original Text: This is his idea

:s/\<his\>/her/

Translated Text: This is her idea

Nota: :Dovresti racchiudere la parola con , che costringerà la sostituzione a cercare solo la parola intera e non una corrispondenza parziale.

Esempio 7. Sostituisci parola1 o parola2 con una nuova parola usando un'espressione regolare

Nell'esempio seguente, tutte le occorrenze di good o nice verranno sostituite con awesome.

Original Text: Linux is good. Life is nice.

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

Translated Text: Linux is awesome. Life is awesome.


Puoi anche eseguire la sostituzione specificando un'espressione regolare. L'esempio seguente sostituisce hey o hi con hai. Tieni presente che questo non sostituisce le parole "loro", "questo".

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

  • \<– confine di parole.
  • \| – “logico o” (in questo caso ehi o ciao)

Esempio 8. Trova e sostituisci interattivo in Vim Editor

Puoi eseguire la ricerca e la sostituzione interattiva utilizzando il flag "c" nel sostituto, che chiederà conferma per eseguire la sostituzione o per saltarla come spiegato di seguito. In questo esempio, l'editor di Vim farà una ricerca globale della parola "fantastico" e la sostituirà con "meraviglioso". Ma eseguirà la sostituzione solo in base al tuo input come spiegato di seguito.

:%s/awesome/wonderful/gc

replace with wonderful (y/n/a/q/l/^E/^Y)?
  • y – Sostituirà la parola evidenziata corrente. Dopo averlo sostituito, evidenzierà automaticamente la parola successiva che corrisponde al modello di ricerca
  • n – Non sostituirà la parola evidenziata corrente. Ma evidenzierà automaticamente la parola successiva che corrisponde al modello di ricerca
  • a – Sostituirà automaticamente tutte le parole evidenziate che corrispondono ai criteri di ricerca.
  • l – Questo sostituirà solo la parola evidenziata corrente e interromperà lo sforzo di ricerca e sostituzione.

Esempio 9. Sostituendo tutte le righe con il relativo numero di riga.

Quando la stringa inizia con '\=', dovrebbe essere valutata come un'espressione. Usando la funzione "linea" possiamo ottenere il numero di riga corrente. Combinando entrambe le funzionalità, la sostituzione esegue la numerazione delle righe di tutte le righe.

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


Nota: Questo è diverso da ":set number" in cui non scriverà i numeri di riga nel file. Ma quando usi questa sostituzione, rendi permanentemente disponibili questi numeri di riga all'interno del file.

Esempio 10. Sostituzione del carattere speciale con il suo valore equivalente.

Sostituendo il ~ con il valore della variabile $HOME.

Original Text: Current file path is ~/test/

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

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

È possibile utilizzare la funzione di espansione per utilizzare tutte le variabili predefinite e definite dall'utente disponibili.

Esempio 11. Modificare il numero di sequenza in un elenco numerato durante l'inserimento di un nuovo elemento

Si supponga di avere un elenco numerato come il seguente all'interno di un file di testo. In questo esempio, supponiamo che tu voglia aggiungere una nuova riga dopo l'articolo 2. Per questo, dovresti modificare di conseguenza il numero di tutti gli altri articoli.

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° articolo "Crea Vim come il tuo IDE Perl usando perl-support.vim Plugin" è stato perso. Quindi, quando si desidera
aggiungerlo, si desidera modificare "Articolo 3" in "Articolo 4", "Articolo 4" in "Articolo 5", fino a "Articolo 12" in "Articolo 13".

Ciò può essere ottenuto con il seguente comando di sostituzione vim.

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

  • Intervallo:4,$ – dalla 4a all'ultima riga.
  • Sequenza di ricerca – \d\+ – sequenza di cifre
  • Modello da sostituire – \=submatch(0) + 1 – ottiene il modello abbinato e aggiunge 1 ad esso.
  • Flag:poiché non è presente alcun flag, per impostazione predefinita sostituisce solo la prima occorrenza.


Dopo aver eseguito l'istruzione sostitutiva il file diventerà così, dove potrai
aggiungere il 3° Articolo.

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

Nota:controllare che la sostituzione abbia cambiato 3 in 4, 4 in 5 e così via. Ora possiamo aggiungere una nuova riga menzionandola come Articolo 3 e non è necessario apportare modifiche manuali.

Esempio 12. Sostituendo la frase che inizia con maiuscolo. (vale a dire il titolo maiuscolo l'intero documento).

Durante la formattazione di un documento, anche la creazione del titolo è una cosa importante. Può essere fatto facilmente con la sostituzione.

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

  • \.\s*\w – Modello di ricerca – letterale . ( punto ) seguito da zero o più spazio e un carattere word.
  • toupper:converte il testo specificato in maiuscolo.
  • submatch(0) – restituisce il modello abbinato.

Testo prima della sostituzione:

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.

Testo dopo la sostituzione (le modifiche sono in grassetto)

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.

Lettura consigliata

Vim 101 Hacks, di Ramesh Natarajan . Sono un drogato da riga di comando. Quindi, naturalmente sono un grande fan degli editor di Vi e Vim. Diversi anni fa, quando scrivevo molto codice C su Linux, leggevo tutti i suggerimenti e i trucchi disponibili per l'editor Vim. Sulla base della mia esperienza con l'editor Vim, ho scritto l'eBook Vim 101 Hacks che contiene 101 esempi pratici su varie funzionalità avanzate di Vim che ti renderanno veloce e produttivo nell'editor Vim. Anche se usi Vi e Vim Editor da diversi anni e non hai letto questo libro, per favore fatti un favore e leggi questo libro. Rimarrai stupito dalle capacità dell'editor Vim.

Fantastici articoli sull'editor di Vim

Di seguito sono riportati alcuni fantastici tutorial dell'editor Vi / Vim che potresti trovare utile.

  • Tutorial Macro Vi e Vim:come registrare e riprodurre
  • Browser Firefox turbo con funzionalità Vim Editor utilizzando il componente aggiuntivo Vimperator
  • Tutorial:crea Vim come IDE C/C++ usando il plug-in c.vim
  • Converti Vim Editor in un bellissimo browser di codice sorgente per qualsiasi linguaggio di programmazione

Nota: Iscriviti a The Geek Stuff e non perdere nessun futuro Suggerimenti e trucchi per editor di Vi e Vim .


Linux
  1. Editor di testo ViM 101 Guida

  2. Utilizzo dei comandi Sed,ex e perl per trovare e sostituire un testo in Linux

  3. Usare "sed" per trovare e sostituire?

  4. Xed Text Editor – Una sostituzione di Gedit e Pluma

  5. trova il testo corrispondente e sostituisci la riga successiva

Come trovare e sostituire testo, parola o stringa in un file

50 esempi semplici e utili di comando Trova in Linux

Come trovare e sostituire il testo in Vim

Vi e Vim Editor:5 fantastici esempi per il completamento automatico delle parole utilizzando Ctrl-X Magic

3 potenti moschettieri di Vim Editor:Macro, Mark e Map

Lavorare con l'editor Vim (editor di testo)