In VIM, sostituisci il percorso con barre senza utilizzare le barre di escape


10

In vim voglio sostituire un lungo percorso /a/b/f/g/d/gcon un altro /s/g/w/d/g/rin un file di testo. Di solito uso \/ma ci sono troppe barre qui. C'è un modo più semplice?

Risposte:


29

È possibile utilizzare un altro carattere anziché barra /come delimitatore al comando di sostituzione.

Esempio usando #:

:%s#/a/b/f/g/d/g#/s/g/w/d/g/r#

1
Molto bello, questa è la soluzione migliore finora.
Seth

1
Questo funziona anche in ed, sed, perl, ecc.
deltab,

2

Forse puoi usare sed

Esempio 1 - @delimitatore sed : sostituire /opt/omni/lbina/opt/tools/bin

Quando si sostituisce un nome percorso che ha /, è possibile utilizzare @come delimitatore anziché /. Nell'esempio sed di seguito, nell'ultima riga del file di input, è /opt/omni/lbinstato modificato in /opt/tools/bin.

$ sed 's@/opt/omni/lbin@/opt/tools/bin@g' path.txt /usr/kbos/bin:/usr/local/bin:/usr/jbin/:/usr/bin:/usr/sas/bin /usr/local/sbin:/sbin:/bin/:/usr/sbin:/usr/bin:/opt/omni/bin: /opt/tools/bin:/opt/omni/sbin:/root/bin

Da: http://www.thegeekstuff.com/2009/10/unix-sed-tutorial-advanced-sed-substitution-examples/

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.