【问题标题】:Can't call recorded macros in vim无法在 vim 中调用录制的宏
【发布时间】: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 来查看宏是否记录在该寄存器中。并且可能将@ 映射到其他更易于访问的键或键组合(例如&lt;leader&gt;q
  • 试试:noremap &lt;leader&gt;q @ - 您可能已经有@ 的地图了吗? (但在此之前,请在不重新映射的情况下重新启动 Vim 并执行 :verbose map @ 以查看是否某些插件/您的​​ vimrc 弄乱了密钥)
  • :verbose map @ 输出:@ :wincmd w&lt;CR&gt;。虽然不知道这是从哪里来的。也许来自我安装的插件之一。 :noremap &lt;leader&gt;q @ 有效。如果您发布它,我会接受它作为答案;)
  • 对宏使用编号寄存器不是一个好主意 - “编号寄存器 1 包含由最近的删除或更改命令删除的文本”,因此它将很快被覆盖。
  • 是的,我现在已经将宏保存到q,因为它更容易输入(我的领导键是,):,qq :) 感谢@moopet 的提示。顺便说一句:显然我是将:wincmd w映射到@的白痴-它在我的.vimrc中^^

标签: vim macros


【解决方案1】:

所描述的行为表明 @ 被 Vim 加载的插件/脚本映射(映射可用于 :verbose map @)。一种解决方案是在另一个组合键中捕获原始的 @ 功能:

:noremap <leader>q @

.. 并使用它而不是 @。另一种解决方案 - 直接删除原始映射(脚本,vimrc)或使用“违规”插件的配置选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    相关资源
    最近更新 更多