前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VSCode 配置 NeoVIM 插件,实现自动切换输入法

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

原创
作者头像
莫他喵
发布2024-05-31 15:36:32
1990
发布2024-05-31 15:36:32

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 配置项中填写路径),然后按弹窗指引重启扩展即可。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 安装 neovim
  • 2. 安装并配置 VSCode Neovim 插件
  • 3. 配置切换 Mode 时自动切换输入法
    • 3.1 安装 im-select
      • 3.2 配置 init.vim
        • 3.3 VSCode Neovim 扩展设置 init.vim 路径
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档