Vim 替换命令中的感叹号有什么用
Vim what is the use of exclamation mark in substitute command
我最近找到了 vim 的替代命令,其中作者将 /
替换为 !
,如下所示::%s!foo!bar
我不明白与传统的区别:%s/foo/bar
.
我搜索了一些关于这个语法的文档,但没有找到任何相关的东西,所以我试图自己试验,但我无法弄清楚这两种形式之间的区别。这是我发现的:
- 您不能在同一命令中混用
/
和 !
。例如::%s/foo!bar
将失败。
- 符号
!
可用于包含 /
的模式。例如,如果我想在我的文件中用 %
替换 </
,我可以用 :%s!</!%!g
而不是 :%s/<\//%/g
:我不需要转义 /
第一个命令,但如果那是 !
. 的唯一用途,我会感到惊讶
- 一些正则表达式似乎在
/
下失败并在 !
下正常工作,但由于我远不是正则表达式大师,所以我不确定这一点。
所以我的问题是:vim 替换中的 /
和 !
有什么区别,我什么时候应该使用一个而不是另一个?
两者都可以使用,只要它们一致(不混用)。通常使用 /
。但如果要替换的字符串中有多个/
,可以使用其他字符。例如:
:%s!/usr/local/bin!/usr/bin!
:%s:/usr/local/bin:/usr/bin:
:%s,/usr/local/bin,/usr/bin,
我最近找到了 vim 的替代命令,其中作者将 /
替换为 !
,如下所示::%s!foo!bar
我不明白与传统的区别:%s/foo/bar
.
我搜索了一些关于这个语法的文档,但没有找到任何相关的东西,所以我试图自己试验,但我无法弄清楚这两种形式之间的区别。这是我发现的:
- 您不能在同一命令中混用
/
和!
。例如::%s/foo!bar
将失败。 - 符号
!
可用于包含/
的模式。例如,如果我想在我的文件中用%
替换</
,我可以用:%s!</!%!g
而不是:%s/<\//%/g
:我不需要转义/
第一个命令,但如果那是!
. 的唯一用途,我会感到惊讶
- 一些正则表达式似乎在
/
下失败并在!
下正常工作,但由于我远不是正则表达式大师,所以我不确定这一点。
所以我的问题是:vim 替换中的 /
和 !
有什么区别,我什么时候应该使用一个而不是另一个?
两者都可以使用,只要它们一致(不混用)。通常使用 /
。但如果要替换的字符串中有多个/
,可以使用其他字符。例如:
:%s!/usr/local/bin!/usr/bin!
:%s:/usr/local/bin:/usr/bin:
:%s,/usr/local/bin,/usr/bin,