在vim的帮助下我想转换这个文件
aaaaaaaaaaaa.xxx()
bbbbbbbbbbbbbbb.xxx()
cc.xxx()
ddddddddd.xxx()
eeeeeee.xxx()
fffff.xxx()
进入此文件
aaaaaaaaaaaa
bbbbbbbbbbbbbbb
cc
ddddddddd
eeeeeee
fffff
像
这样的搜索/替换命令:%s/.xxx()//g
会做这个工作。我想知道是否有更好更优雅的选择?
答案 0 :(得分:4)
此替换只是偶然的:.
匹配任何字符,因此似乎适用于您的情况,因为.
与.
匹配,就好像你实际上是故意这样做的。您必须转义.
以匹配常规.
:
:%s/\.xxx()//g
由于每行只有一次搜索模式,您可以放心地省略g
标记。
:%s/\.xxx()//
你甚至可以省略最后两个斜杠:
:%s/\.xxx()
如果那不优雅,我不知道是什么。
但是,总有另一种方式。像这样的东西,例如:
:%norm $F.D
答案 1 :(得分:1)
VIM进行字符串替换的过程更好,但我有另一种解决方案来替换它。
如果你想要替换多个文件,它很有用。
#grep -rl "string1" * -R | xargs sed -i 's/string1/string2/g'
上面的命令是'grep'和'sed'
的组合grep:命令将搜索“string1”并返回找到string1的文件名
sed:会将“string1”替换为“string2”
string1:旧字符串 string2:新字符串
希望它对多文件串替换更有用,更快。
参考链接:http://tarunlinux.blogspot.in/2014/02/linux-replace-string-in-multiple-files.html
答案 2 :(得分:1)
如果文本行中没有额外的点,您可以尝试
%s/\..*$//g
答案 3 :(得分:1)
也许使用:normal
:%norm f.D
有关详细信息,请参阅:
:h :norm
答案 4 :(得分:0)
我会这样做:
qaf.Dj0q@6@a
它比你的略短,如果你的文件有很多行需要更改,可能会慢一些。我更通用:你可以用宏来应用你能想到的几乎任何东西。