0

我正在尝试学习如何使用 vim 的录制功能,但似乎我只能从普通模式会话中录制和播放击键。当我切换到输入模式时,我所做的击键似乎没有被记录或在我播放录音时没有播放。为了说明我在说什么:

我有一个包含这些行的文件:

Dir['*.data']        # Files with the "data" extension
Dir['?']             # Any single-character filename
Dir['*.[ch]']        # Any file that ends with .c or .h
Dir['*.{java,rb}']   # Any file that ends with .java or .rb

我想将每行末尾的注释移到右侧 4 个选项卡。所以我把光标放在第一行的开头,我开始记录注册 a: qa,然后我输入f#找到在线注释,然后切换到插入模式i并再次输入<Tab><Tab><Tab><Tab>切换到正常模式esc并向下移动到下一行的开头并停止录制q。当我播放录音时,@a只有光标向下移动但没有输入按键播放?

4

2 回答 2

2

我很确定你已经superTab在你的 vim 中安装了。前段时间我遇到了同样的问题。

您可以根据需要做的是,您以这种方式记录:

qaf#4i<c-v><tab><esc>j0q

然后x@a

所以,按Ctrl-v<Tab>而不是<tab>

顺便说一句,一个小技巧:如果你想保存x, (重播多少次),你可以使用递归/嵌套宏:

qaf#4i<c-v><tab><esc>j0@aq

之后,您只需按下@a它就会执行相同的操作,直到行尾。

请注意,此答案仅针对您的宏观问题,不适用于编辑问题。如果您只是想实现您的编辑目标,我会C-V选择块而I不是录制宏。

于 2013-10-13T11:43:55.073 回答
1

您忘记了q问题的最后一步,您在现实生活中是否也跳过了它?

无论如何,您的宏可以工作,这是您在该宏中记录的内容不起作用:在您将评论推到右侧并退出插入模式后,您将光标向下移动,但它现在位于评论的中间f#无法工作,因为#该行的光标后没有:

Dir['*.data']                    # Files with the "data" extension
Dir['?']             # Any single-character filename
                                ↑
                           the cursor

开始录制0是一个宏的最佳实践:它将光标放在第一列,并确保进一步的移动和进一步的执行将按预期工作。

在你的情况下,f#如果你先做的话,会起作用0

qa
0
f#
i<Tab><Tab><Tab><Tab>
<Esc>
j
q
于 2013-10-13T11:32:07.543 回答