Недавно я увидел команду замещения, где автор /
заменил ее !
следующим образом::s!abc!ABC!g
Я попытался найти некоторую документацию по этому использованию, но я не смог найти ничего уместного. Поэтому я попытался поэкспериментировать сам и еще раз не смог понять реальную разницу между этими двумя знаками. Вот что я нашел:
- Не возможно смешивать
!
и/
в команде. Например:s!abc/ABC
не удается. - Это может быть полезно, чтобы
!
избежать экранирования/
в шаблоне. Например, если я хочу заменить</
на,%
я могу использовать:%s!</!%!g
вместо:%s/<\//%/g
. - Кажется, что в некоторых случаях некоторые регулярные выражения не будут работать
/
и работать должным образом,!
но, поскольку я на самом деле не эксперт по регулярным выражениям, я не уверен в этом.
Поэтому мой вопрос прост: в чем преимущество использования !
замещающей команды и когда я должен решить использовать ее вместо /
?
substitute
statox
источник
источник
Ответы:
От
:help :global
:Как вы уже разработали из своих экспериментов, это должно предотвратить так называемый « синдром наклоняющейся зубочистки ». Учти это:
против:
Вторая форма, очевидно, намного более читабельна.
Это единственная причина, по которой вы можете изменить разделитель; чтобы сделать его более читаемым для нас, людей. Компьютер не заботится.
Кстати, некоторые другие программы еще более гибкие,
sed
например , в GNU вы можете использовать ихx
как разделитель, если хотите.sed sxaxbxg file
так же, какsed s/a/b/g file
.источник
:%s@/home/martin/test@/home/jake/x@
, так как «жирный»@
делает еще проще увидеть, где начинаются / заканчиваются отдельные части утверждения.:%s#/home/martin/test#/home/jake/x#
работы еще лучше, но это только личное мнение.