6

我是 Vim 的新手,正在尝试设置一些插件。到目前为止,我已经安装了病原体、pyflakes 和 supertab。后者似乎不起作用;tab在插入模式下按下只会写入字符串<Plug>SuperTabForward

问题仅出现在我的 vimrc 中的以下行(为了使用 colemak 布局更好地导航):

set langmap=hjklneiHJKLNEI;kniejhlKNIEJHL

没有上面的行,它工作得很好。经过进一步的实验,我将其范围缩小到set langmap=e;h. 这条单行打破了超级表。

我对 Vim 完全没有经验,对正在发生的事情或如何修复它一无所知。即使是一种解决方法也会很有趣。

4

2 回答 2

2

我想出了一个解决方法:编辑,替换withsupertab.vim的实例,这会导致字符串变成.<Plug>SuperTab<P>P<Plug>SuperTabForward<P>PForward

我认为它有效,因为这些字符串不再包含set langmap=hjklneiHJKLNEI;kniejhlKNIEJHL. 有几个问题还没有解决。langmap 有问题吗?对我来说,似乎明确存在该选项以允许仅影响命令的映射:

When you are typing text in Insert mode the characters are
inserted directly.  When in command mode the 'langmap' option takes
care of translating these special characters to the original meaning
of the key.  This means you don't have to change the keyboard mode to
be able to execute Normal mode commands.

那么,对于我来说,在imap字符串中存在 langmap 映射字符(即插入模式映射)会产生任何影响,这对我来说毫无意义。如果是这样,它将随机破坏任何使用长imap字符串的插件,例如 SuperTab。只是为了说明这有多么奇怪,如果我这样做了imap no yes,就必须通过写作jo来触发它。我不知道这背后的逻辑是如何运作的。

于 2012-01-17T16:11:46.950 回答
0

我有同样的问题,但这个解决方法不适合我的情况,所以我发布了我自己的问题,有人做了一个补丁来修复它:

Vim langmap 中断插件 (bépo)

https://groups.google.com/forum/#!msg/vim_dev/QnNwLWhJ744/1qNcD7d9OvgJ(见最后一条消息)

此补丁引入了一个新设置:langnoremap设置后,可以防止langmap影响此类映射。

它可能需要更多的测试,并且可能不会很快包含在 vim 中,但它似乎工作得很好!

于 2014-10-21T13:10:31.490 回答