1. 安装 neovim
https://github.com/neovim/neovim/blob/master/INSTALL.md
安装好后记住 nvim 二进制的路径
2. 安装并配置 VSCode Neovim 插件
https://marketplace.visualstudio.com/items?itemName=asvetliakov.vscode-neovim
在扩展设置中,找到 Neovim Executable Paths
配置项并在 对应系统 的输入框中输入 nvim 二进制绝对路径(例如 MacOS 就只需要在 Neovim Executable Paths: Darwin
配置项中填写路径)。
3. 配置切换 Mode 时自动切换输入法
中文语境下,从 InsertMode 退出到 NormalMode 时需要将中文输入法切换为英文才能正常使用 VIM 快捷键;并且进入 InsertMode 时还要重新切换到中文输入法,非常麻烦。
这里提供一种方案,在退出 InsertMode 时自动切换为英文输入法,而在进入 InsertMode 时恢复上次使用的输入法。
3.1 安装 im-select
https://github.com/daipeihust/im-select
im 是 input method(输入法)的缩写。im-select
用于在命令行中切换输入法。不带参数执行程序,能获取当前输入法的 ID:
im-select
这里需要在英文输入法下执行该命令,获取英文输入法的 ID。例如 MacOS 英文输入法 ID 为 com.apple.keylayout.ABC
。
im-select
将输入法 ID 作为参数即可切换输入法。在中文输入法下将刚刚获取的英文输入法 ID 作为参数,可验证输入法从中文切换到英文:
im-select com.apple.keylayout.ABC
3.2 配置 init.vim
为 init.vim
文件添加如下内容(文件不存在则在合适位置新建一个),用于在模式切换时设置 hook 脚本:
" 定义一个全局变量来存储输入法状态
let g:last_im_select = ''
" 在退出插入模式时保存当前输入法状态
autocmd InsertLeave * let g:last_im_select = system('im-select')
" 在进入插入模式时恢复输入法状态
autocmd InsertEnter * if !empty(g:last_im_select) | silent execute '!im-select ' . g:last_im_select | endif
" 在退出插入模式时切换到英文输入法
autocmd InsertLeave * silent !im-select com.apple.keylayout.ABC
脚本需注意以下几点:
- 根据各系统输入法 ID 的不同,需将上述脚本中
com.apple.keylayout.ABC
替换为 3.1 节获取到的英文输入法 ID。 - 若
im-select
未写入PATH
环境变量,在脚本中改用绝对路径即可。
3.3 VSCode Neovim 扩展设置 init.vim 路径
在扩展设置中,找到 Neovim Init Vim Paths
配置项并在 对应系统 的输入框中输入 init.vim
文件的绝对路径(例如 MacOS 就只需要在 Neovim Init Vim Paths: Darwin
配置项中填写路径),然后按弹窗指引重启扩展即可。