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?

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#

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/

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.