在 Unix 中,^
允许您用一些文本替换新文本来重复命令。例如:
csh% grep "stuff" file1 >> Results
grep "stuff" file1
csh% ^file1^file2^
grep "stuff" file2
csh%
有 Vim 等价物吗?很多时候,我发现自己在命令行上一遍又一遍地编辑小东西。
在 Unix 中,^
允许您用一些文本替换新文本来重复命令。例如:
csh% grep "stuff" file1 >> Results
grep "stuff" file1
csh% ^file1^file2^
grep "stuff" file2
csh%
有 Vim 等价物吗?很多时候,我发现自己在命令行上一遍又一遍地编辑小东西。
专门用于替换:用于&
从正常模式重复当前行上的最后替换。
要对所有行重复,请键入:%&
q:
进入命令行窗口 ( :help cmdwin
)。
您可以在此窗口中编辑和重复使用以前输入的 ex-style 命令。
一旦你点击:
,你可以输入几个字符和向上箭头,它会匹配你输入的字符。例如键入:set
,它会爬回你的“集合”。这也适用于搜索 - 只需键入/
和向上箭头。向上箭头会按时间顺序/abc
为您提供匹配的搜索字符串。
有2种方式。
hello
以将单词更改为“hello”。将光标移动到另一个单词后,我.再次点击。要在所有具有相同标志的行上重复前面的替换,您可以使用映射g&
。
如果您已在普通模式(当前行)或可视模式(当前选择中包含的行)下进行了替换,并且您想重复最后一次替换,您可以::s/A/B/g
:'<,>'s/A/B/g
移动到另一行(正常模式)并简单地按&
,或者如果你喜欢,:
- &
- <CR>
(看起来像:&
),以影响当前行而不突出显示,或者
突出显示范围(可视模式)并按:
- &
- <CR>
(看起来像:'<,'>&
)以影响选择中的线条范围。
以我对 Vim 的有限了解,这解决了几个问题。一方面,最后一个视觉替换:'<,'>s/A/B/g
可作为正常模式和视觉模式下的最后一个命令 ( :
- <UP>
) 使用,但在正常模式下总是会产生错误。(它仍然指的是视觉模式的最后一个选择——而不是我假设的光标处的空选择——我的示例替换在一次遍历中耗尽了所有匹配项。)同时,最后一个正常模式替换以:s
, not开头:'<,'>s
,所以你需要修改它以在可视模式下使用。最后,&
可以直接从正常模式使用,因此它接受重复和其他选择的替代方案,如2&
接下来的两行,正如用户 ruohola 所说,g&
对于整个文件。
在这两个版本中,按:
then&
就像您已按:
然后重新键入一样工作s/A/B/
,因此您上次所处的模式无关紧要,只有当前光标行或选择确定要受影响的行。(请注意,像这样的尾随标志也g
被清除,但在此语法中也将出现在:&g
/中: '<,'>&g
。在我看来,这是喜忧参半,因为您可以/必须在此处重新指定标志,而独立&
似乎没有拿旗子。我一定是错过了什么。)
欢迎提出建议和指正。其中大部分来自刚刚的实验,所以我相信它还有很多,但希望它无论如何都会有所帮助。
看看这个: http: //vim.wikia.com/wiki/Using_command-line_history进行解释。