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.
- [c] Conferma ogni sostituzione.
- [g] Sostituisci tutte le occorrenze nella riga.
- [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
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 .