【发布时间】:2016-03-14 17:48:10
【问题描述】:
我在 vim 中通过在普通模式下按 q1 录制了一个宏,然后执行了一些移动命令并使用 a 将文本写入文档 进入插入模式。然后我按 ESC 回到正常模式并用 q 完成宏录制。
现在我想通过按 ALT GR+q 来运行录制的宏以获取 @ 符号(我使用的是德语键盘布局),然后 1 因为我将宏保存到 1 寄存器。但是在正常模式下输入@ 后,vim 在状态行中显示:wincmd w,并且在按下 1 后不运行宏。
我错过了什么吗?还是 vim 宏在德语键盘布局上的工作方式不同?
编辑:
:registers 1
--- Registers ---
"1 A<br ><80>kb/>^[
【问题讨论】:
-
您可以运行命令
:registers 1来查看宏是否记录在该寄存器中。并且可能将@映射到其他更易于访问的键或键组合(例如<leader>q) -
试试
:noremap <leader>q @- 您可能已经有@的地图了吗? (但在此之前,请在不重新映射的情况下重新启动 Vim 并执行:verbose map @以查看是否某些插件/您的 vimrc 弄乱了密钥) -
:verbose map @输出:@ :wincmd w<CR>。虽然不知道这是从哪里来的。也许来自我安装的插件之一。:noremap <leader>q @有效。如果您发布它,我会接受它作为答案;) -
对宏使用编号寄存器不是一个好主意 - “编号寄存器 1 包含由最近的删除或更改命令删除的文本”,因此它将很快被覆盖。
-
是的,我现在已经将宏保存到
q,因为它更容易输入(我的领导键是,):,qq:) 感谢@moopet 的提示。顺便说一句:显然我是将:wincmd w映射到@的白痴-它在我的.vimrc中^^