VSCode Neovim
文档用途
介绍如何通过 VSCode Neovim 插件, 在 VSCode 中使用 Neovim.
VSCode 插件
插件简介

VSCode Neovim 插件可以让我们在 VSCode 中使用 neovim.
可以参考笔者的 neovim 配置 whisperpine/nvim, 其中包括了专门给 VSCode 使用配置文件.
INFO
虽然有个名为 Vim 的 VSCode 插件, 但是不建议使用.
因为其 bug 较多, 性能差, 且无法通过 vimrc 或 init.vim 来配置.
比同类插件的优势
VSCode Neovim 使用了真正的 neovim 作为后端, 以 VSCode 作为前端.
使其可以支持通过 vim 原生配置文件来做设置, 并支持 vim 原生插件.
且与 VSCode 结合紧密, 例如当输入 : 或 /, 就会在 vscode 顶部打开一个输入框.

WARNING
阅读到这里时, 不要 直接安装插件, 请先确保满足 前提条件.
前提条件
安装 Neovim
我们需要在本地安装 neovim:
brew install neovimscoop install neovim建议使用 bob 来安装和管理 neovim 版本:
https://github.com/mordechaihadad/bob安装插件管理器
建议安装 neovim 插件管理器 vim-plug.
sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |`
ni "$(@($env:XDG_DATA_HOME, $env:LOCALAPPDATA)[$null -eq $env:XDG_DATA_HOME])/nvim-data/site/autoload/plug.vim" -ForceVIM 的配置文件
neovim 的配置文件夹路径:
C:\Users\<用户名>\AppData\Local\nvim\~/.config/nvim/配置文件可以使用 vim 语言, 对应的文件名是 init.vim.
也可使用 lua 语言, 对应的文件名是 init.lua.
这里用 init.vim 文件举例:
call plug#begin()
Plug 'tpope/vim-surround'
call plug#end()在 neovim 中输入 :PlugInstall 来安装 vim 插件.

插件配置
独立进程
为了性能更优, 建议使用单独的进程运行 VSCode Neovim 插件:
Extensions > Experimental: Affinity

配置文件路径
我们还需要让 VSCode Neovim 插件知道配置文件的路径.
这个配置文件不建议直接使用 init.vim 或 init.lua,
因为给 VSCode 用的配置文件通常会更简洁 (例如 vim 插件更少).
| 操作系统 | VSCode 配置名称 |
|---|---|
| macOS | Vscode-neovim: Neovim Init Vim Paths: Darwin |
| Linux | Vscode-neovim: Neovim Init Vim Paths: Linux |
| Windows | Vscode-neovim: Neovim Init Vim Paths: Win32 |
以下配置文件中使用了 vim 插件管理器 vim-plug 以及 vim 插件 vim-surround.
" Vim pluggin manager requirement:
" https://github.com/junegunn/vim-plug
call plug#begin()
Plug 'tpope/vim-surround' " Delete, change and add surroundings
call plug#end()
let g:clipboard = g:vscode_clipboard " Use vscode clipbard API
set ignorecase " Ignore upper case or lower case when searching
set smartcase " Override 'ignorecase' if there are upper case chars
set nohls " Don't highlight searching result
set fileformat=unix " Set end of line style to LF
set clipboard+=unnamedplus " Share system clipboard热键冲突
VIM 快捷键
在 VSCode 中使用 vim 编辑方式时, "热键冲突" 是不得不面对的问题.
建议 不要 直接修改 VSCode Neovim 插件自带的 VSCode 快捷键 (可能没效果).
插件专门提供了两个配置用于修改快捷键:
| VSCode 配置名称 | 作用 |
|---|---|
| Vscode-neovim: Ctrl Keys For Insert Mode | 启用哪些 INSERT 模式下的 Ctrl 快捷键 |
| Vscode-neovim: Ctrl Keys For Normal Mode | 启用哪些 NORMAL 模式下的 Ctrl 快捷键 |
例如可以禁用以下快捷键:
| vim mode | 快捷键 | VSCode 中的作用 |
|---|---|---|
| NORMAL | ctrl+k | 是很多快捷键的 Leader Key |
| NORMAL | ctrl+j | 显示或隐藏底边窗口 (例如 Terminal) |
| NORMAL | ctrl+t | 在当前 workspace 中查找 symbol |
| NORMAL | ctrl+w | 关闭当前标签页 |
VSCode 快捷键
另外可以考虑修改 VSCode 默认的快捷键, 以避免冲突.
例如 ctrl+b 在 VSCode 中默认用于开关侧边栏, 而在 vim 中用于向上翻页.
此时可以考虑将 VSCode 开关侧边栏的快捷键修改为 ctrl+shift+b.
Explorer

在 Explorer 窗口中可以使用类似于 vim 的快捷键.
实际体验非常棒, 有了它, 可以真正做到 "手不离开键盘".
快捷键-移动
| 快捷键 | 作用 |
|---|---|
j | 向下滚动一行 |
k | 向上滚动一行 |
z c | 折叠当前层级 |
z m | 折叠全部 |
/ | 开始搜索 |
快捷键-操作
| 快捷键 | 作用 |
|---|---|
r | 重命名 |
x | 剪切 |
y | 复制 |
p | 粘贴 |
a | 创建文件 |
A | 创建文件夹 |
d | 删除 |
v | 分屏显示 |
悬浮窗

使用以下快捷键, 翻看悬浮窗内容时, 就不再需要鼠标滚轮了.
| 快捷键 | 快捷键 | 作用 |
|---|---|---|
h / j / k / l | 上下左右滚动 | |
g g | Home | 跳转至最顶部 |
shift+g | End | 跳转至最底部 |
ctrl+f | PgDn | 向下翻页 |
ctrl+b | PgUp | 向上翻页 |
虽然使用鼠标悬停在文字上方, 也能看到悬浮窗,
但我们肯定希望尽量避免使用鼠标, 因此推荐用快捷键 shift+k.
这是 VSCode Neovim 插件附带的快捷键 (也是 vim 的默认快捷键).
也可以使用 VSCode 原生的快捷键
ctrl+kctrl+i.
TIP
使用快捷键时, 可能只显示但未 "聚焦" 悬浮窗.
如果没有 "聚焦", 那么以上快捷键就 没有 作用.
此时可以再次使用快捷键, 就能 "聚焦".