我之前的问题似乎有点含糊不清,我会改写它:
我有一个这样的文件:
copythis abc
replacethis1 xyz
qwerty replacethis2
hasfshd replacethis3 fslfs
And so on...
注意: replacethis1,replacethis2,replacethis3,...可以是任何单词
如何使用最小vim命令将“replacethis1”,“replacethis2”,“replacethis3”,... word替换为“copythis”字样。
我能做的一件事就是通过以下步骤:
在VIM中是否有更好的方法(使用较少数量的vim命令)?
答案 0 :(得分:6)
既然你改变了问题,我会这样做:
移至第一个“replacethis1”并输入cw(更改单词),然后手动输入“copythis”。
转到下一个“replacethis”,点击。 (重复上一次操作)
转到下一个“replacethis”,点击。,
依此类推,等等。
如果“copythis”是一个小词,我认为这是最好的解决方案。
答案 1 :(得分:4)
需要包含数字,每行可能有多个实例:
:%s/replacethis\d/copythis/g
答案 2 :(得分:3)
鉴于“replacethis [1-3]”可以是任意无关的词,全球最快/最简单的方法是:
:%s/replacethis1\|replacethis2\|replacethis3/copythis/g
(请注意,您需要使用\ |来使管道充当“或”。否则,vim将查找文字字符。)
答案 3 :(得分:1)
:%s/copythis/replacethis/g
用replacethis替换所有出现的copythis。或者您可以指定一系列行号,如:
:8,10 s/copythis/replacethis/g
注意,末尾的/ g将告诉它替换所有出现的内容。如果你把它关掉它只会做第一个。
答案 4 :(得分:1)
创建此映射:
:map z cwcopythis ^ [
(^ [是转义字符,您可以使用Ctrl + V Ctrl + []
转到要替换的每个单词,然后按z
答案 5 :(得分:1)
我也一直在努力解决这个问题,我想我只是用最干净的方式解决了这个问题:
使用最干净的命令将copythis放入寄存器r:
/copythis
"rye
然后转到替换品并将其替换为r:
的内容/replacethis
cw<CTRL-R>r<ESC>
然后你可以n.n.n.n.n.n.n.
为其余的人,或者如果它们完全不同,只需转到每个开头并点击.
关键是一步替换和粘贴,以便稍后使用.
。
答案 6 :(得分:0)
答案 7 :(得分:0)
如果你需要多次做同样的动作 - 用下一行的第二个单词交换一行的第一个单词,我说你可以录制一个宏并在需要时调用它
答案 8 :(得分:0)
您可以重新映射,例如正常模式下的m
键删除光标下的单词并粘贴缓冲区::nnoremap m "_diwP
。
然后,您只需复制所需的单词,将光标移动到要替换的单词的任意位置,然后键入m
。
编辑:映射到m是一个坏主意,因为它用于标记位置。但你可以使用例如无论如何;
。