【问题标题】:How to edit an existing key mapping in vim?如何在 vim 中编辑现有的键映射?
【发布时间】:2014-12-31 17:07:23
【问题描述】:

如何在 vim 中编辑现有映射?我使用标准映射命令之一在我的 .vim 文件中设置映射:

map ^A o]]></code>^M<GRD minus="" summary="">^M^M<p></p>^M^M</GRD>^M^M<code><![CDATA[0kkkkkk5ehi

我想编辑这个长命令以使用“matlab”而不是代码,例如:

map ^A o]]></matlab>^M<GRD minus="" summary="">^M^M<p></p>^M^M</GRD>^M^M<matlab><![CDATA[0kkkkkk5ehi

但是,我不想编辑 .vim 文件——我将再次使用原始映射。我只想更改当前会话的映射。我试过:map ^A,但这只显示当前映射,我无法复制显示的文本。

附:注意^M和^A字符是用Ctrl-Q Ctrl-M等插入的。

【问题讨论】:

    标签: vim keymapping keymaps


    【解决方案1】:

    只为当前会话调整映射是不寻常的;可能这就是为什么它的支持很差。我猜你实际上并不关心 session,而是 Matlab filetype。为此,有很好的支持。如果'filetype' 被检测为matlab,您可以在~/.vim/after/ftplugin/matlab.vim 中放置一个缓冲区本地映射变体:

    map <buffer> ^A ...
    

    直接编辑

    如果你宁愿坚持原来的计划,我会这样做:

    1. 打开配置::split ~/.vimrc
    2. 就地编辑映射
    3. 拉线:yy
    4. 执行以激活当前会话::@"
    5. 中止编辑而不保存::bdelete!

    另类

    对于更通用的解决方案,您还可以通过:redir 捕获原始:map ^A 命令的输出,然后将:put 捕获到:new暂存缓冲区,最后是@ 987654333@那个。它更多的是手动步骤和键入,但可以通过自定义命令自动执行。如果您经常需要,值得。

    【讨论】:

    • 谢谢!我最终使用:redir @t 保存到寄存器(t)而不是文件。然后,在运行我的命令后,我做了:redir END 然后"tp 从寄存器中粘贴。这得到了我正在寻找的文本,我成功地从中重新创建了编辑后的地图。
    • 那是 :redir @t :map ^A :redir END "tp 获取用于映射 ^A 字符的文本。
    • 我可以在输入 :map ^A 后使用复制和粘贴来检索现有映射,但这也有点笨拙。可能更喜欢这里建议的 :split /etc/vim/gvimrc 解决方案
    【解决方案2】:

    要仅为当前会话设置地图,请执行以下操作

    :map ^A o]]></matlab>^M<GRD minus="" summary="">^M^M<p></p>^M^M</GRD>^M^M<matlab><![CDATA[0kkkkkk5ehi
    

    【讨论】:

    • 对不起,这不能回答我的问题。我试图获取现有地图的文本;我已经知道如何执行此命令了。
    猜你喜欢
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    相关资源
    最近更新 更多