如何在vim中编辑现有的键映射?

时间:2014-12-31 17:07:23

标签: vim keymapping keymaps

如何在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,但这只显示当前的映射,我无法复制显示的文本。

P.S。请注意,使用Ctrl-Q Ctrl-M等插入^ M和^ A字符

2 个答案:

答案 0 :(得分:4)

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

map <buffer> ^A ...

直接编辑

如果您更愿意坚持原计划,我会这样做:

  1. 打开配置::split ~/.vimrc
  2. 就地编辑地图
  3. 排队:yy
  4. 执行以激活当前会话::@"
  5. 在不保存的情况下中止编辑::bdelete!
  6. 替代

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

答案 1 :(得分:0)

要仅为当前会话设置地图,请执行

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