Regex 如何用vim中的一个单词替换连续的相同单词?
我想用vim中的一个单词替换连续的相同单词,也就是说只保留一个单词,用Regex 如何用vim中的一个单词替换连续的相同单词?,regex,vi,Regex,Vi,我想用vim中的一个单词替换连续的相同单词,也就是说只保留一个单词,用kitty替换kitty,用world替换world,等等 为什么我在vim中的正则表达式是错误的 :%s/\<\(\w+\)\>\s\1/\1/g :%s/\\s\1/\1/g 需要在vim正则表达式中转义+ :%s/\<\(\w\+\)\>\s\1/\1/g Magic对vim正则表达式的语法进行了相当大的修改。请务必阅读文档。特别是在较长的元字符ladden正则表达式中,它可以提高长度和可
kitty
替换kitty
,用world
替换world
,等等
为什么我在vim中的正则表达式是错误的
:%s/\<\(\w+\)\>\s\1/\1/g
:%s/\\s\1/\1/g
需要在vim正则表达式中转义+
:%s/\<\(\w\+\)\>\s\1/\1/g
Magic对vim正则表达式的语法进行了相当大的修改。请务必阅读文档。特别是在较长的元字符ladden正则表达式中,它可以提高长度和可读性。嘿,在得到原始文本的答案后更改问题并不好。要回答子问题(您可以对我的答案进行注释),可以使用\(\1\s*\)\+
重复部分匹配。为什么:%s/\\(\s\+\1\)\+/\1/gc
不能用kitty
替换kitty kitty
?\(\1\s*\\+/code>不能代表重复部分匹配。\v\s+(\1\s*)+
对我有效(这正是我推荐的,仅与\v
匹配)
:%s/\v<(\w+)>\s\1/\1/g