我试图学习如何使用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
时,只有光标向下移动,但没有任何输入击键播放?
答案 0 :(得分:2)
我很确定您在vim中安装了superTab
。我前一段时间遇到了同样的问题。
您可以为您的需求做的是,您以这种方式记录:
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
而不是录制宏。
答案 1 :(得分: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
会有效。
{{1}}