Vim“烦恼”与键盘布局

时间:2011-11-04 20:15:57

标签: vim windows-xp

这就是事情。我有两种键盘布局,HR(克罗地亚语,我的母语)和EN(英语)。好吧,实际上我还有更多,但目前它们并不重要。

在使用Vim时我经常需要切换到EN - 因为在HR上我既没有[]也没有{}也没有其他角色 - 然后回到我自己语言的角色的HR。这是一种痛苦。

当然,由于我在没有任务栏的情况下工作,这通常会导致浪费 Shift 按。

在Vim中是否有办法“检测”键盘布局设置,并对其进行评估并将其置于状态行中?

我已经尝试重新映射一些键(比如tilda反击),但这引入了一大堆新问题。

所有建议(此处未考虑)均表示赞赏。

1 个答案:

答案 0 :(得分:15)

在Vim中有一种与语言相关的密钥重映射的系统方法 通过设置,可以同时配置整个映射范围 keymap选项。它允许定义字符之间的映射 英文键盘布局和相应的非英文字符 那个布局(见:help mbyte-keymap)。翻译将进行 只有当用户输入文本时,才输入Vim命令 某种。这适用于键入Insert,Replace和 命令行模式以及输入搜索模式或 ftr等命令的单字符参数。

在所有上述情况中,除了未决字符外 参数,切换keymap中指定的键映射的使用 选项由 Ctrl + ^ 执行 ( Ctrl + 6 )击键。 (请参阅:help i_^^:help c_^^。)如上所述,启用的keymap仅影响文本 输入;正常模式下的键盘行为保持不变,无论如何 当前的语言映射。这样,当一个人离开插入模式 在非英语键盘映射中,他们可以立即使用普通模式 命令和键绑定而不切换键盘布局。返回 返回插入模式切换输入到最后一次使用的keymap 已离开(keymap处于活动状态的事实存储在 iminsert选项)。

但是,不会记住命令行的键映射状态 默认情况下模式,因为开始输入被认为很方便 每次都是英文,因为Ex命令的名称都是ASCII。命令

:set imcmdline

否定了这种行为。

键入搜索模式时语言映射是否处于活动状态(for 在/中单独记住?imsearch命令) 选项。要同步切换使用映射进行输入 搜索模式并在缓冲区中插入文本,执行

:set imsearch=-1

大约十二个半月没有一些预定义的键盘映射 语言。通常,语言由几个映射支持 不同的是它们被设计用于编码或键盘布局。 可以使用:e $VIMRUNTIME/keymap在Vim中浏览它们。在 要启用特定键盘映射,请设置keymap选项 到该映射的名称。例如,以下命令 将keymap更改为内置的UTF-8克罗地亚地图。

:set keymap=croatian_utf-8

如果要自定义现有的键盘映射或创建全新的键盘映射 一,查看:help keymap-file-format的键映射文件格式。

将该设置行放入.vimrc文件可以激活 任何缓冲区中指定的keymap。不过,keymap选项是 甚至更强大,因为它是缓冲的本地,意味着各种各样 键盘映射可以在不同的缓冲区中同时使用 取决于设置。