这就是事情。我有两种键盘布局,HR(克罗地亚语,我的母语)和EN(英语)。好吧,实际上我还有更多,但目前它们并不重要。
在使用Vim时我经常需要切换到EN - 因为在HR上我既没有[
,]
也没有{
,}
也没有其他角色 - 然后回到我自己语言的角色的HR。这是一种痛苦。
当然,由于我在没有任务栏的情况下工作,这通常会导致浪费 Shift 按。
在Vim中是否有办法“检测”键盘布局设置,并对其进行评估并将其置于状态行中?
我已经尝试重新映射一些键(比如tilda反击),但这引入了一大堆新问题。
所有建议(此处未考虑)均表示赞赏。
答案 0 :(得分:15)
在Vim中有一种与语言相关的密钥重映射的系统方法
通过设置,可以同时配置整个映射范围
keymap
选项。它允许定义字符之间的映射
英文键盘布局和相应的非英文字符
那个布局(见:help mbyte-keymap
)。翻译将进行
只有当用户输入文本时,才输入Vim命令
某种。这适用于键入Insert,Replace和
命令行模式以及输入搜索模式或
f
,t
,r
等命令的单字符参数。
在所有上述情况中,除了未决字符外
参数,切换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
选项是
甚至更强大,因为它是缓冲的本地,意味着各种各样
键盘映射可以在不同的缓冲区中同时使用
取决于设置。