【问题标题】:How to automatically change keyboard layout on switch to vim normal-mode?如何在切换到 vim 正常模式时自动更改键盘布局?
【发布时间】:2012-06-14 13:33:08
【问题描述】:

有时我使用 vim 编写非美国文本,当我想在普通模式下使用任何命令时,我需要将布局更改为美国。可以自动执行吗?

PS。我可以像 this 那样进行映射,但在这种情况下,命令看起来像 :ц 而不是 :w - 不漂亮而且有错字风险。

更新

我不想使用键盘映射选项,因为我更喜欢通过 CapsLock 切换语言。 我尝试为 InsertLeave 事件编写 autocmd,但失败了...

更新 2

可能有人知道,为什么以下不起作用?

function SetUsLayout()
  !setxkbmap us,ru
endfunction

autocmd InsertLeave * call SetUsLayout()

【问题讨论】:

标签: vim keyboard-layout


【解决方案1】:
:help langmap

可能会提供您需要的所有信息。

【讨论】:

  • "在命令行模式下输入的字符将不受此选项的影响。"所以 hjkl 工作正常,但命令不行。
  • 这处理您所要求的:正常模式命令。命令模式见:help keymap
  • 好的,我可以设置keymap=russian-jcukenwin,但要切换到美国我需要使用ctrl+^(或映射任何其他),但不是很方便CapsLock。
  • 我真的无法测试它(法式布局),但您可以尝试类似:nnoremap : :<C-^> 的方法。 CapsLock 是怎么回事?
  • stackoverflow.com/a/2176558/656610 现在我尝试使用依赖操作系统的解决方案:setxkbmap 在 InsertLeave 事件上自动切换布局
【解决方案2】:

看起来,跨平台解决方案不存在......所以,在 KDE 下,我使用以下内容:

function! SetUsLayout()
  silent !qdbus org.kde.keyboard /Layouts setLayout us > /dev/null
endfunction

autocmd InsertLeave * call SetUsLayout()

【讨论】:

    【解决方案3】:

    对我来说,使用 qdbus 是最好的选择。我制作了一个简单但很脆弱的插件,非常适合我:https://github.com/ironhouzi/bikey-vim/tree/master/plugin

    我称它为脆弱,因为如果其他人想使用它,它就没有太大的鲁棒性。

    我在使用 Vim 时主要需要英语,但也有一些例外。当我想用我的母语写作时,我点击'leader'-k,我的航空公司状态栏会显示我已经切换了语言。当语言不是英语时,脚本会保证每次我进入插入模式时,我的母语都是通过qdbus设置的。每次我离开插入模式时,语言都会重新设置为英语。它还支持缓冲区之间的单独设置。尽管这可能不是最好的做事方式,但我想我会分享它,以防其他人可能会从中得到一些用处。

    【讨论】:

      【解决方案4】:

      在 Ubuntu 中,我使用以下内容:

      function! SetUsLayout()
        silent !qdbus org.gnome.SettingsDaemon.Keyboard /org/gnome/SettingsDaemon/Keyboard org.gnome.SettingsDaemon.Keyboard.SetInputSource 0 > /dev/null
      endfunction
      
      autocmd InsertLeave * call SetUsLayout()
      

      或更短

      silent !gsettings set org.gnome.desktop.input-sources current 0  
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-02-01
        • 2011-09-05
        • 1970-01-01
        • 1970-01-01
        • 2011-06-13
        • 1970-01-01
        • 2012-12-20
        相关资源
        最近更新 更多