32

我正在认真尝试 Vim 来编写我的 Python 应用程序。然而,事实证明 Vim 非常灵活,我想用它作为我工作中的主要编辑器来编写律师/法律文件。问题是我的母语不是英语而是希腊语。因此,我已映射Alt+Shift以在英语和希腊语键盘布局之间进行更改。

我遇到的问题是每次我想输入 Vim 命令(返回英文)时都必须按Alt+ 。Shift所以当我键入我的文档时它是Alt+ ,然后再次+来输入 Vim 命令。这违背了使用 Vim 的目的,至少在使用速度方面是这样。ShiftAltShift

所以我的问题很简单:有没有什么办法可以避免在用非拉丁语言(例如希腊语)编写时输入 Vim 命令而频繁更改键盘布局AltShift

4

1 回答 1

44

这个问题可以在keymap选项的帮助下解决。它允许定义备用键盘映射以在需要文本输入的模式中使用。

要在插入、替换或命令行模式(但不是普通模式)下在默认和备用键盘映射之间切换,请使用 Ctrl+ ^( Ctrl+ 6)。更改键盘映射仅影响文本输入;无论当前的键盘映射设置如何,普通模式下的键盘行为都保持不变。可以离开以希腊语书写的插入模式,并立即使用普通模式键绑定,而无需切换到不同的键盘布局。如果随后返回插入模式,或者,例如,通过键入 开始搜索 /,Vim 会自动将键盘映射切换回希腊语。

在这些文本输入模式中使用的当前键盘映射在切换到其他模式之间会被记住。这种行为的唯一例外是命令行模式,它总是以默认键盘映射开始,因为大多数时候需要键入 Ex 命令(以 ASCII 格式)。使用该keymap选项集,用户应该在 Vim 中工作,保持系统键盘布局设置为英语,同时使用Ctrl+切换 Vim 键盘映射^(而不是系统范围的布局开关)。

例如,要永久启用 UTF-8 希腊语键盘映射,请将以下行添加到您的.vimrc文件中。

:set keymap=greek_utf-8

大量语言有许多预定义的键盘映射,您可以在 Vim 本身中使用:e $VIMRUNTIME/keymap. 请注意,通常为一种语言提供多个键盘映射,它们仅在字符编码方面有所不同,因此任何人都可以选择适合其配置的一种。

我还建议设置以下选项以指定是否应在插入模式和输入搜索模式时默认启用键盘映射:

:set iminsert=0 imsearch=-1

有关详细说明,请参见:help iminsert:help imsearch

还有一种特殊的语言模式,如果我没记错的话,它在 Vim 中早于keymap. keymap它允许通过手动指定与键盘上的键对应的字母对以保存在langmap选项中的长字符串来实现类似于提供的行为。就个人而言——我的母语也不是英语——我更喜欢(并推荐)使用这种keymap方式。

总之,我应该强调,以上所有内容同样适用于 Vim 拥有(或可以配置为拥有)键盘映射的任何其他语言。

另请参阅对类似问题“<a href="https://stackoverflow.com/q/8015231/254635">Vim “键盘布局的烦恼””的回答,因为我最初给出了这个答案。

于 2010-09-23T10:48:42.623 回答