29

在 Unix 中,^允许您用一些文本替换新文本来重复命令。例如:

csh% grep "stuff" file1 >> Results
grep "stuff" file1
csh% ^file1^file2^
grep "stuff" file2
csh%

有 Vim 等价物吗?很多时候,我发现自己在命令行上一遍又一遍地编辑小东西。

4

7 回答 7

81

专门用于替换:用于&从正常模式重复当前行上的最后替换。

要对所有行重复,请键入:%&

于 2013-07-18T13:48:08.670 回答
11

q:进入命令行窗口 ( :help cmdwin)。

您可以在此窗口中编辑和重复使用以前输入的 ex-style 命令。

于 2008-12-19T21:12:53.107 回答
9

一旦你点击:,你可以输入几个字符和向上箭头,它会匹配你输入的字符。例如键入:set,它会爬回你的“集合”。这也适用于搜索 - 只需键入/和向上箭头。向上箭头会按时间顺序/abc为您提供匹配的搜索字符串。

于 2008-12-19T21:27:06.167 回答
7

有2种方式。

  1. 您只需按一下.键即可精确重播最后一个命令(移动除外)。例如,我键入cwthenhello以将单词更改为“hello”。将光标移动到另一个单词后,我.再次点击。
  2. 对于更高级的命令,如替换,在您执行替换后,只需按一下:键,然后↑</kbd> up arrow key, and it fills your command line with the same command.
于 2008-12-19T21:04:01.237 回答
6

要在所有具有相同标志的行上重复前面的替换,您可以使用映射g&

于 2020-04-11T21:43:07.990 回答
1

如果您已在普通模式(当前行)或可视模式当前选择中包含的行)下进行了替换,并且您想重复最后一次替换,您可以::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。在我看来,这是喜忧参半,因为您可以/必须在此处重新指定标志,而独立&似乎没有拿旗子。我一定是错过了什么。)

欢迎提出建议和指正。其中大部分来自刚刚的实验,所以我相信它还有很多,但希望它无论如何都会有所帮助。

于 2020-10-12T06:28:00.247 回答
0

看看这个: http: //vim.wikia.com/wiki/Using_command-line_history进行解释。

于 2008-12-19T21:17:53.003 回答