Dans VIM, remplacez le chemin par des barres obliques sans utiliser de barres obliques d'échappement

10

Dans vim, je veux remplacer un long chemin /a/b/f/g/d/gpar un autre /s/g/w/d/g/rdans un fichier texte. Habituellement, j'utilise \/mais il y a trop de barres obliques ici. Existe-t-il un moyen plus simple?

user13107
la source

Réponses:

29

Vous pouvez utiliser un autre caractère au lieu d'une barre oblique /comme délimiteur de la commande de substitution.

Exemple utilisant #:

:%s#/a/b/f/g/d/g#/s/g/w/d/g/r#
cuonglm
la source
1
Très bien, c'est la meilleure solution jusqu'à présent.
Seth
1
Cela fonctionne également dans ed, sed, perl, etc.
deltab
2

Vous pouvez peut-être utiliser sed

Exemple 1 - @délimiteur sed : substitut /opt/omni/lbinà/opt/tools/bin

Lorsque vous substituez un nom de chemin d'accès qui a /, vous pouvez utiliser @comme délimiteur au lieu de /. Dans l'exemple sed ci-dessous, dans la dernière ligne du fichier d'entrée, a /opt/omni/lbinété remplacé par /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
la source