VSCode 配置 NeoVIM 插件,实现自动切换输入法

2024-05-31 15:36:32 浏览数 (4)

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

iminput method(输入法)的缩写。im-select 用于在命令行中切换输入法。不带参数执行程序,能获取当前输入法的 ID:

代码语言:shell复制
im-select

这里需要在英文输入法下执行该命令,获取英文输入法的 ID。例如 MacOS 英文输入法 ID 为 com.apple.keylayout.ABC

im-select 将输入法 ID 作为参数即可切换输入法。在中文输入法下将刚刚获取的英文输入法 ID 作为参数,可验证输入法从中文切换到英文:

代码语言:shell复制
im-select com.apple.keylayout.ABC

3.2 配置 init.vim

init.vim 文件添加如下内容(文件不存在则在合适位置新建一个),用于在模式切换时设置 hook 脚本:

代码语言:vim复制
" 定义一个全局变量来存储输入法状态
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 配置项中填写路径),然后按弹窗指引重启扩展即可。

1 人点赞