В VIM замените путь косыми чертами, не используя escape-слэши

10

В vim я хочу заменить длинный путь /a/b/f/g/d/gдругим /s/g/w/d/g/rв текстовом файле. Обычно я использую, \/но здесь слишком много слешей. Есть ли более простой способ?

user13107
источник

Ответы:

29

Вы можете использовать другой символ вместо косой черты в /качестве разделителя команды подстановки.

Пример использования #:

:%s#/a/b/f/g/d/g#/s/g/w/d/g/r#
cuonglm
источник
1
Очень приятно, это лучшее решение на сегодняшний день.
Сет
1
Это также работает в ed, sed, perl и т. Д.
deltab
2

Может быть, вы можете использовать Sed

Пример 1 - СЭД @разделитель: Заменитель /opt/omni/lbinк/opt/tools/bin

Когда вы подставляете имя пути, которое /вы используете, вы можете использовать @вместо разделителя /. В приведенном ниже примере sed, в последней строке входного файла, /opt/omni/lbinбыл изменен на /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

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

vfbsilva
источник