在vim中重复最后一个命令


13

我注意到vim可以很直观,但是我很难找到一种方法来重复倒数第二个命令(或倒数第三,第四倒数等)。通过.以普通模式键入,它将重复上一个命令。按3.将重复上一次命令三遍。

比方说,我键入oHello<Esc>然后A, World!<Esc>。我现在得到

Hello, World!

屏幕上。现在,说我想得到

Hello, World!
Hello
Hello
Hello

而不输入Hello。vim是否将历史记录存储在一个命令之外,所以我可以键入类似的内容3,2.(即重复倒数第二个命令三次)?


2
请记住,您可以将任何内容记录为宏(qaoHello<esc>q然后@a在需要时重复Hello。)还有@@重复上一次使用的宏。
詹姆斯·麦克劳克林

2
我认为您也可以3@a多次重复执行宏
redbmk 2012年

Answers:


8

不,其中的.命令vim没有历史记录,我所知道的普通模式命令也没有任何重复历史记录。对于最少的击键次数,我建议4oHello<Esc>3jA, World<Esc>。如果您已经做过oHello<Esc>A, World<Esc>,则可以使用uyy<Ctrl-r>3p


4

有一个名为RepeatLast.vim的插件,该插件可以执行您想要的操作,但要付出一定的代价:您的vim始终处于录制宏模式。您可以像使用任何其他vim软件包一样,使用正在使用的软件包管理器进行安装,或者,~/.vim/plugin如果使用vim或~/.config/nvim/plguin使用neovim ,则可以简单地将其克隆并放入。要重复倒数第二个动作,您应该2\.在普通模式下键入,要重复第二个动作,您应该在普通模式下键入<n>\.

http://www.vim.org/scripts/script.php?script_id=4381 https://github.com/vim-scripts/RepeatLast.vim


2
@Sassan,也许您可​​以编辑答案并快速解释如何安装此插件,以及如何准确地使用它来解决OP的问题?
terdon

2
@terdon如果有人阅读了我的答案并且不知道如何使用软件包管理器,那么对他好奇并花时间在vim中了解软件包管理器确实是更好的选择。对于那些不了解如何从docs / README.md获取有关vim插件的信息的读者也是如此。
萨桑(

那不是重点。只是链接的答案不视为答案。答案应该是独立的,并提供应用建议的解决方案所需的所有信息。感谢您的编辑!
terdon

1
实际上,我同意,这个插件太过骇人了,无法被不知道如何安装的人使用:)
Boris Churzin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.