Linux 使用&;时如何消除空间间隙;vim中的符号
我想在所有以“w”结尾的单词后面加上“caps”。 例如,“下巴”应该变成“下巴”,而“吹气”应该变成“吹气帽” 下面的命令使用正则表达式来实现上面的要求Linux 使用&;时如何消除空间间隙;vim中的符号,linux,vim,substitution,Linux,Vim,Substitution,我想在所有以“w”结尾的单词后面加上“caps”。 例如,“下巴”应该变成“下巴”,而“吹气”应该变成“吹气帽” 下面的命令使用正则表达式来实现上面的要求 :%s/[A-Za-z][A-Za-z]*w[^A-Za-z]/&caps 但是当我使用上面的命令时,“jaw”将转换为“jaw caps”而不是“jawcaps” 如何删除位于“jaw”和“caps”之间的空格?您的正则表达式有问题,您的正则表达式将匹配值后的非字符。在您的情况下,匹配jaw[一个空格]而不是jaw :%s/[A-
:%s/[A-Za-z][A-Za-z]*w[^A-Za-z]/&caps
但是当我使用上面的命令时,“jaw”将转换为“jaw caps”而不是“jawcaps”
如何删除位于“jaw”和“caps”之间的空格?您的正则表达式有问题,您的正则表达式将匹配值后的非字符。在您的情况下,匹配
jaw[一个空格]
而不是jaw
:%s/[A-Za-z][A-Za-z]*w[^A-Za-z]/&caps
^^^ here match a space
我建议您使用capture正则表达式
:%s/\([A-Za-z][A-Za-z]*w\)\([^A-Za-z]\)/\1caps\2
应该使用更好的解决方案
这个怎么样:
:%s/w\>\zs/caps/g
Sato Katsura的回答
:%s/w\>\zs/caps/g
的工作原理如下:
/w\>
/w\>\zs
(或/w\zs\>
)s/w\>\zs/caps/
%
,在这些行上的每一次出现:标志是g
:%s/w\>\zs/caps/g
- 匹配单词结尾
:h/\>
- 设置匹配开始
:h\zs
- 替换命令
:h:s
- 范围规格<代码>:h:范围
- 替换标志
:h:s_标志
:%s/w\>\zs/caps/g