Neovim 输入法模式自动切换设置
Contents
更新日志
- 2022-11-07:针对 macbook M1 CPU 设置添加说明,添加 smartim 插件使用。
Vim/Neovim 下输入中文最大的痛就是需要频繁从中文模式切换到英文模式,来输入 Vim 的各种命令。本文总结几款插件,可以帮助我们在 macOS、Windows 下,离开 insert 模式的时候自动切换到英文输入。
macOS
vim-barbaric
vim-barbaric 是一款帮助用户自动设置输入法模式的插件。
安装依赖
在 macOS 下,需要额外安装 xkbswitch-macosx:
curl -o /usr/local/bin/xkbswitch https://raw.githubusercontent.com/myshov/xkbswitch-macosx/master/bin/xkbswitch
在 macOS M1 芯片下,以上预编译的 binary 文件无法适用(仅针对 intel cpu),可以使用 这里 提供的 fork,自行编译,然后放到 /usr/local/bin
目录。
插件安装使用
然后使用插件管理器安装该插件即可:
Plug 'rlue/vim-barbaric'
该插件开箱即用,无需额外设置。
vim-xkbswitch
另外一款插件是 vim-xkbswitch。
安装依赖
这个插件也需要安装 xkbswitch-macosx,参考上面的安装步骤。另外该插件依赖 libxkbswitch-macosx,需要安装该库:
curl -o /usr/local/lib/libxkbswitch.dylib https://github.com/myshov/libxkbswitch-macosx/raw/master/bin/libxkbswitch.dylib
如果使用的 M1 芯片的 mac,则需要自己编译,参考 这个 issue,使用如下命令编译:
gcc -dynamiclib libxkbswitch.c -o bin/libxkbswitch.dylib
把生成的动态库放到 /usr/local/lib
下面:
cp bin/libxkbswitch.dylib /usr/local/lib
插件安装使用
首先安装该插件:
Plug 'lyokha/vim-xkbswitch'
最后,在 Neovim 配置中加入下面的设置即可:
let g:XkbSwitchEnabled = 1
smartim
使用 packer.nvim 安装如下:
use { "ybian/smartim", event = { "InsertEnter" }, config = function ()
-- default IME mode
vim.g.smartim_default = "com.apple.keylayout.ABC"
end}
Note that we should set variable smartim_default
based on our case.
We can run the im-select executable without argument to get current mode:
./plugin/im-select
Windows
neuims
Windows 下可以安装 neuims:
if g:is_mac
Plug 'lyokha/vim-xkbswitch'
elseif g:is_win
Plug 'Neur1n/neuims'
endif
然后使用命令 IMSToggle
打开这个插件的功能。打开功能以后,使用 ESC
离开插入模式,输入法会自动切换到 US keyboard 模式,重新按 i 进入插入模式,会切换到之前的输入法 (注意是切换到了输入法的默认状态,如果输入法默认状态是英文输入,在中文输入状态,按 ESC 离开插入模式,再进入插入模式,输入法处于英文输入状态,目前似乎还不支持切换到输入法上次使用的状态,不过这已经比较好了)。