这个问题可以在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 “键盘布局的烦恼””的回答,因为我最初给出了这个答案。