如何记录命令和输入模式击键

时间:2013-10-13 10:57:02

标签: vim

我试图学习如何使用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个选项卡进一步向右移动。所以我将光标放在第一行的开头,然后我开始录制以注册:qa,然后我键入f#以在线找到注释,然后切换到插入模式{{ 1}}并输入i再次切换到普通模式<Tab><Tab><Tab><Tab>并向下移动到下一行的开头并停止录制esc。当我播放录音q时,只有光标向下移动,但没有任何输入击键播放?

2 个答案:

答案 0 :(得分:2)

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

您可以为您的需求做的是,您以这种方式记录:

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

然后x@a

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

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

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

之后,你只需按@a它就会一直这样做直到行尾。

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

答案 1 :(得分:1)

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

无论如何,你的宏工作,这是你在那个不起作用的宏中记录的内容:将你的注释推到右边并退出插入模式后,你将光标向下移动但它现在位于中间评论f#无法正常工作,因为该行上的光标后面没有#

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

使用0开始录制是一种宏观最佳做法:它将光标放在第一列,并确保进一步移动,从而进一步执行将按预期工作。

在您的情况下,如果您先f# 0qa 0 f# i<Tab><Tab><Tab><Tab> <Esc> j q 会有效。

{{1}}