在Unix中,^
允许您重复一个命令,其中一些文本替换为新文本。例如:
csh% grep "stuff" file1 >> Results
grep "stuff" file1
csh% ^file1^file2^
grep "stuff" file2
csh%
是否有Vim等价物?很多时候我发现自己在命令行上一遍又一遍地编辑小事。
答案 0 :(得分:46)
专门用于替换:使用&
在正常模式的当前行上重复上次替换。
要重复所有行,请键入:%&
答案 1 :(得分:10)
q:
进入命令行窗口(:help cmdwin
)。
您可以在此窗口中编辑和重复使用以前输入的ex-style命令。
答案 2 :(得分:7)
有两种方式。
hello
将单词更改为“hello”。将光标移动到另一个单词后,我点击。再次执行此操作。答案 3 :(得分:6)
点击:
后,您可以键入几个字符和向上箭头,它将与您输入的字符匹配。例如键入:set
,它将通过您的“集合”回溯。这也适用于搜索 - 只需输入/
和向上箭头。并且/abc
向上箭头会以适当的方式为您提供匹配的搜索字符串。
答案 4 :(得分:2)
要使用所有相同的标志在所有行上重复上一个替换,可以使用映射g&
。
答案 5 :(得分:1)
如果您是在普通模式:s/A/B/g
(当前行)或可视模式:'<,>'s/A/B/g
(当前选择中包括的行)中以 替换的,重复最后一次替换,您可以:
移动到另一行(正常模式),只需按&
,或者如果您愿意,可以按:
-&
-<CR>
(看起来像{{ 1}}),以不突出显示影响当前行,或者
突出显示一个范围(可视模式),然后按:&
-:
-&
(看起来像<CR>
)以影响选择中的行范围
由于我对Vim的了解有限,因此可以解决一些问题。例如,在普通模式和可视模式下,最后的视觉替换:'<,'>&
可以作为最后一个命令(:'<,'>s/A/B/g
-:
)使用,但总是会在正常模式下产生错误。 (它仍然指的是可视模式中的最后一个选择-而不是像我假设的那样指向光标处的空选择-并且我的示例替换一次性耗尽了所有匹配项。)同时,最后一个普通模式替换以<UP>
开始,而不是:s
,因此您需要对其进行修改以在可视模式下使用。最后,:'<,'>s
可直接从普通模式获得,因此它接受重复和选择的其他替代方式,例如接下来两行的&
,以及如ruohola用户所说的,2&
代表整个文件。
在两个版本中,先按g&
再按:
就像您先按&
然后重新输入:
一样,因此您上次使用的模式无关紧要,只有当前的光标线或所选内容才能确定要受影响的行。 (请注意,s/A/B/
之类的结尾标志也已清除,但在此语法中也紧随其后,例如g
/ :&g
。在我看来,这是喜忧参半的结果,您可以/必须在这里重新指定标志,而独立的: '<,'>&g
似乎根本不带有标志。我必须缺少一些东西。)
我欢迎提出建议和更正。大部分都是来自实验,所以我敢肯定还有很多,但还是希望能有所帮助。
答案 6 :(得分:0)