vim的插件不能重新映射键吗

更改插件的默认按键... 更改插件的默认按键 展开
 我来答
hqxz556
推荐于2016-07-12 · TA获得超过2831个赞
知道大有可为答主
回答量:1686
采纳率:93%
帮助的人:577万
展开全部
一般是可以的。

有些插件的文档里可有写如何更改。这种情况,按照文档指示的方法是最好的。

如果不是这种情况,简单的方法是,再映射一个键到原来的键映射上。
比如原来的键是 ,x 而你喜欢用 \x 来做这件事,那么:
map \x ,x
有时就可以工作的很好。因为 vim 支持递归映射,这样 \x 解释成 ,x 后它映射的是什么,还会去继续解释。(凡事都有两面性,因为递归映射有时会导致其它问题。因此就还有一个 noremap 的命令,告诉 vim 不要递归映射。)

如果这不出什么问题,就最好了。但如果楼主的本意是想解放 ,x 移作它用。那么这个方法就不行。
此时你可以在 vim 里执行:
:map ,x
这样 vim 会把 ,x 现在映射到哪里给显示出来(可能有很多个,因为在不同模式下,同一个键可以映射到不同的功能)。楼主记住它们,然后在 .vimrc 里把 \x 原封不动的映射到 ,x 本来映射的功能上。然后 ,x 就可以解放移作它用了。

如果您看不懂 :map ,x 回显的内容。执行:
:redir @+
:map ,x
:redir END

这会把命令显示的结果复制到剪切板。然后您把内容粘贴到这里追问,我会把下一步应该如何做告诉您。

根据插件开发的质量,在 .vimrc 里定义的映射在先,插件加载很可能在后,因此如果先定义了 ,x 的功能有可能会在插件加载之后被覆盖。
开发过硬的插件,应该会先查是否已经有到指定功能的映射,没有才会再做映射。而且映射之前,也会再查一次,它想指定的映射键是不是已经被用作其它功能。

如果是低质量的插件,那就得去改代码了。更麻烦。

这里 ,x \x 等只是为了说明方便。请您替换成您自己需要的按键。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式