No VIM, substitua o caminho por barras sem usar barras de escape

10

No vim, quero substituir um caminho longo /a/b/f/g/d/gpor outro /s/g/w/d/g/rem um arquivo de texto. Normalmente eu uso, \/mas há muitas barras aqui. Existe uma maneira mais fácil?

user13107
fonte

Respostas:

29

Você pode usar outro caractere em vez de barra /como delimitador do comando de substituição.

Exemplo usando #:

:%s#/a/b/f/g/d/g#/s/g/w/d/g/r#
cuonglm
fonte
1
Muito bom, esta é a melhor solução até agora.
Seth
1
Isso também funciona em ed, sed, perl etc.
deltab
2

Talvez você possa usar o sed

Exemplo 1 - @delimitador sed : substitua /opt/omni/lbina/opt/tools/bin

Quando você substitui um nome de caminho que possui /, você pode usar @como um delimitador em vez de /. No exemplo sed abaixo, na última linha do arquivo de entrada, /opt/omni/lbinfoi alterado para /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

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

vfbsilva
fonte