Vim imap jk <Esc>无法使用

4
在我的vimrc文件中,我已经使用imap将jk键重新映射为escape键。
当我使用jk键时,问题就出现了;它并没有实现escape的功能,而只是输出了。
以下是有问题的条目: imap jk <Esc> 值得一提的是,我也在fedora中使用vim-X11。

2
你能给我们展示一下你的vimrc文件中的条目吗? - tamasgal
:imap jk <Esc> 对我来说很有效... - Michael Berkowski
可能是其他映射正在干扰。请尝试使用 inoremmap jk <esc> - Kevin
2个回答

5

看起来你的'cpoptions'设置包含了<,因此像<Esc>这样的特殊按键代码无法识别。

通过以下方式找出是在哪里设置的:

:verbose set cpo?

或者重新编写映射以使用文字转义字符;通过 Ctrl + V Esc 进入它;在缓冲区中应该显示为 ^[
注:虽然不相关,但通常应使用 :inoremap,除非需要重新映射。

谢谢,Ctrl + V 的方法可以正常工作!但是 set cpo? 返回了一个菜单文件。我需要编辑哪一行来解决这个问题? - Johnny McKenzie
1
哦,cpo 在许多脚本中都被保存和恢复,所以这是一个挑战。二分查找(即禁用您一半的脚本)可能有效,但也许更容易的方法是在您的映射定义上方放置 :set cpo-=< - Ingo Karkat
您,先生,真是个牛人!那个方法完美地解决了问题,现在<Esc>键也可以正常使用了。感谢您的帮助,祝您夏至快乐。 - Johnny McKenzie
3
无论 'cpoptions' 的值如何,都有一种方法可以强制 <Esc> 具有特殊含义:imap <special> jk <Esc> - ZyX
@ZyX 谢谢,我得记住这个! - Johnny McKenzie

3

如果您来到这里是因为标题,那么当启用:set paste时,jk映射也无法工作。


1
解决了我的问题。 - IndustryUser1942

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接