这就是事情.我有两种键盘布局,HR(克罗地亚语,我的母语)和EN(英语).嗯,实际上我还有更多,但目前它们并不重要.
在与Vim合作时,我经常需要切换到EN - 因为在HR上我没有[,]也没有{,}也没有很多其他角色 - 然后回到HR用于我自己语言的角色.这是一种痛苦.
当然,由于我在没有任务栏的情况下工作,这经常会导致浪费时间 Shift.
在Vim中有没有办法"检测"键盘布局集,并评估它并将其置于状态行?
我已经尝试重新映射一些键(比如tilda反击),但这引入了一大堆新问题.
所有的建议(没有想到这里)对此表示赞赏.
ib.*_*ib. 15
在Vim中有一种与语言相关的密钥重映射的系统方法,它通过设置keymap选项一次配置一系列映射
.它允许定义英文键盘布局的字符与该布局的相应非英文字符之间的映射(请参阅参考资料:help mbyte-keymap).只有当用户输入文本时才会进行翻译,而不是输入某种类型的Vim命令.这适用于键入插入,替换和命令行模式以及以输入搜索模式或单字符参数像命令f,t,r.
在所有上述上下文中,除了挂起的字符参数之外,切换使用keymap
选项中指定的键映射是通过Ctrl+ ^
(Ctrl+ 6)键击来执行的.(参见:help i_^^和:help
c_^^.)如上所述,启用的键映射仅影响文本输入; 无论当前语言映射如何,正常模式下的键盘行为都保持不变.这样,当一个人在非英语键盘映射中插入插入模式时,他们可以立即使用普通模式命令和键绑定而无需切换键盘布局.返回到插入模式会将输入切换到上次使用时使用的键映射(键映射处于活动状态的事实存储在
iminsert选项中).
但是,默认情况下,键盘映射的状态不会记住命令行模式,因为每次开始用英语键入都很方便,因为Ex命令的名称都是ASCII格式.命令
:set imcmdline
Run Code Online (Sandbox Code Playgroud)
否定了这种行为.
在
选项中单独记住键入搜索模式(for /和?命令)时语言映射是否处于活动状态
imsearch.要同步切换使用映射输入搜索模式并在缓冲区中插入文本,请执行
:set imsearch=-1
Run Code Online (Sandbox Code Playgroud)
大约十六种语言没有一些预定义的键盘映射.通常,语言由几个映射支持,这些映射因设计用于编码或键盘布局而不同.人们可以在Vim中浏览它们:e $VIMRUNTIME/keymap.要启用特定键盘映射,请将该keymap选项设置为该映射的名称.例如,以下命令将更keymap改为内置的UTF-8克罗地亚语映射.
:set keymap=croatian_utf-8
Run Code Online (Sandbox Code Playgroud)
如果要自定义现有的键盘映射或创建全新的键盘映射,请查看键盘映射文件格式:help keymap-file-format.
将该设置行放入.vimrc文件中可以激活任何缓冲区中的指定键映射.然而,该keymap选项更加强大,因为它是缓冲区本地的,这意味着可以根据设置在不同的缓冲区中同时使用各种键盘映射.