Vim langmap破坏了插件(贝泼)。

6

我正在使用一个bépo键位图(http://bepo.fr),寻求完美的vim映射。

到目前为止,我使用了一个很长的noremap列表,但对于许多绑定(例如,运动awCtrl+r),第一个按键是正确重新映射的,但其他键则不是,我认为这是期望的行为,但这并不是我需要的。

理想情况下,除了输入文本(在插入模式和输入替换时)外,在更高层次上完全重新映射我的键盘(在map命令之前)。我正在寻找的似乎是langmap,但我在使用它时遇到了问题。

我在我的.vimrc中添加了这个langmap,它看起来很完美,但破坏了我的一些插件。SuperTab现在在插入模式下插入<Plug>SuperTabForward,当按下Tab时,我在输入模式下按Enter键时会有t<SNR>24_SelectCompletion(1)

是否有人知道如何解决这个langmap问题或更好的重新映射键盘的方法?


1
类似的问题和答案:https://dev59.com/iFzUa4cB1Zd3GeqP4ZB5 - Xavier T.
@XavierT,这确实是同样的问题,但那里唯一的“解决方案”是一个变通办法,对我来说不起作用,因为我重新映射了每个按键。实际上,我认为 langmap 更适合用于映射像俄语字符之类的东西,如果有人回答“langmap 不适用于此用途”,我会接受这个答案,但这从未成为那个问题的答案。与此同时,我仍然拥有我的数百个 noremap :D - Dettorer
重新映射整个键盘是一个愚蠢的想法:b不是因为b键的任何物理属性而成为b;它是b,因为b是“beginning”的第一个字母。几乎每个命令都是如此。你不仅强迫自己将几十个字母映射到其他字母,完全失去了它们的助记性质,而且还要使用肮脏的技巧来对抗Vim,这些技巧甚至都不起作用。无论b在键盘上的位置如何,它始终是b - romainl
这不是正在发生的事情。例如,当我键入“e”动作(它在bépo中是“p”键)时,我想到的是“e”,而不是“p”,并且“e”仍然是打印在我的键盘上的字符。但真正的原因是我想使用hjkl键来移动光标,在bépo中,这将像使用(分别).pbo,这是无法使用的。但如果我重新映射它,我可以使用ctsr键,然后需要重新映射这些键。我可以只重新映射真正有问题的键,但只重新映射一半的键似乎是更糟糕的主意。 - Dettorer
我认为这是一个错误,并要求Bram进行澄清 - Christian Brabandt
1个回答

4
这是一个已知的错误,在之前已经讨论过。我已经做了一个补丁(请见从这里开始的线程),希望Bram很快就会包含这个更改。
更新于11/05/2014: 这已经被补丁7.4.502修复。使用langnoremap选项来解决这个问题。

已打好的 Vim 对我来说不起作用。例如,当按下 <é> 键时,设置 set langnoremapnnoremap / rset langmap=é/ 时无法按预期工作。 - Alexey
好的,我会做,谢谢。我的 Vim 版本是 7.4.622。步骤就是我上面提到的:将这三个命令放入一个文件中,使用 :so % 执行它,然后尝试看看是否有效 -- 结果并没有。 - Alexey
抱歉,我表达不够清楚:它并不是以有趣的方式运作:langmap 本身可以工作,但如果我尝试使用 éç,则会忽略 nnoremap,但使用 a 则可以正常工作。 - Alexey
我已经在 vim_dev 上发布了。 - Alexey
1
谢谢。我稍后会看一下。看起来像是297号问题(https://code.google.com/p/vim/issues/detail?id=297)。 - Christian Brabandt
显示剩余8条评论

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