VSCode Neovim Extension

文章目录

  • [配置与安装 NeoVim](#配置与安装 NeoVim)
    • [1. 安装 NeoVim](#1. 安装 NeoVim)
    • [2. 解决 NeoVim 中文输入法的问题](#2. 解决 NeoVim 中文输入法的问题)
    • [3. 配置 `Ctrl+S` 保存文件并退出insert模式](#3. 配置 Ctrl+S 保存文件并退出insert模式)
    • [4. 取消搜索之后的高亮](#4. 取消搜索之后的高亮)
    • [5. 我的配置](#5. 我的配置)
  • [NeoVim 使用手册](#NeoVim 使用手册)
    • [1. 代码执行折叠和展开的操作](#1. 代码执行折叠和展开的操作)
    • [2. 内置定义的热键](#2. 内置定义的热键)
      • [2.1 文件管理命令](#2.1 文件管理命令)
      • [2.2 标签相关命令](#2.2 标签相关命令)
      • [2.3 窗口相关命令](#2.3 窗口相关命令)
      • 2.4代码编辑区热键
      • [2.5 一些 INSERT 模式下定义的热键](#2.5 一些 INSERT 模式下定义的热键)
      • [2.6 一些侧边栏中进行移动的热键](#2.6 一些侧边栏中进行移动的热键)
      • [2.7 文件资源管理的热键](#2.7 文件资源管理的热键)

配置与安装 NeoVim

1. 安装 NeoVim

可以参考官方安装指南进行安装:VSCode-NeoVim installation

  1. 在 VSCode 插件里搜索 VSCode-NeoVim 插件,进行安装
  2. 安装 NeoVim,需要安装 0.9.0 之后的版本:https://github.com/NeoVim/NeoVim/wiki/Installing-Neovim
  3. VSCode 设置文件 settings.json 中需要添加以下设置:
json 复制代码
"extensions.experimental.affinity": {
    "asvetliakov.VSCode-NeoVim": 1
},
// NeoVim 安装路径,下面是 windows 和 linux(or wsl)的路径,你需要改成你的电脑上安装的路径
"VSCode-NeoVim.NeoVimExecutablePaths.win32": "C:\\Program Files\\Neovim\\bin\\nvim.exe"
  1. 需要添加 NeoVim 配置文件,Windows 的 NeoVim 配置文件在 C:/Users/(你的用户名)/AppData/Local/nvim/init.vim,如果路径不存在,则新建。
  2. VSCode-NeoVim 和 NeoVim 使用同一个 init.lua 配置文件,但是在里面需要做区分,防止打开 VSCode 后会启动大量 NeoVim 的插件,影响速度。
lua 复制代码
if vim.g.VSCode then
    -- VSCode extension
else
    -- ordinary Neovim
end

2. 解决 NeoVim 中文输入法的问题

使用 Vim 的一个痛点是当你从 INSERT 模式切换到 NORMAL 模式下,如果你在 INSERT 模式中使用的是中文输入法,那么退回到 NORMAL 模式,输入无效,NORMAL 模式只接受英文输入。

可以下载 im-select,根据 readme 安装。

我自己使用的是 Windows,将 im-select 放到目录 C:\Program Files\Im Select\im-select.exe,然后在 VSCode settings 中添加以下设置:

lua 复制代码
-- 配置输入法切换的能力
vim.cmd('autocmd InsertLeave * :silent :!C:\\Program Files\\Im Select\\im-select.exe && C:\\Program Files\\Im Select\\im-select.exe 2052')

1033 是英文输入法的代码,需要在设置-语言 中提前添加英语(美国)

使用上述配置,当退回到 NORMAL 模式,输入法会自动切换到英语输入。

3. 配置 Ctrl+S 保存文件并退出insert模式

  • 安装VSCode插件: macros - Visual Studio Marketplace

  • 添加配置 settings.json

    json 复制代码
    "macros": {
        "saveAndEscapeNeovim": [
          "workbench.action.files.save",
          "VSCode-NeoVim.escape"
        ]
      }
  • 添加键映射 keybindings.json

    json 复制代码
    {
        "key": "ctrl+s",
        "command": "macros.saveAndEscapeNeovim",
        "when": "editorTextFocus && NeoVim.mode == insert"
      }

4. 取消搜索之后的高亮

vim 复制代码
:nohlsearch
:noh

5. 我的配置

没有添加任何插件,但解决很多问题:

  1. VSCode NeoVim 折叠代码快捷键失效
  2. NeoVim 搜索忽略大小写
  3. NeoVim 使用系统剪贴板
lua 复制代码
-- 检查是否存在 VSCode 变量
if vim.g.vscode then
    -- 如果存在 VSCode,则创建键映射以调用 VSCode 的命令
    vim.api.nvim_set_keymap('n', 'zR', ":call VSCodeNotify('editor.unfoldAll')<CR>", { noremap = true, silent = true })
    vim.api.nvim_set_keymap('n', 'zM', ":call VSCodeNotify('editor.foldAll')<CR>", { noremap = true, silent = true })
    vim.api.nvim_set_keymap('n', 'zo', ":call VSCodeNotify('editor.unfold')<CR>", { noremap = true, silent = true })
    vim.api.nvim_set_keymap('n', 'zc', ":call VSCodeNotify('editor.fold')<CR>", { noremap = true, silent = true })
else
    -- 如果不存在 VSCode,执行普通的 Neovim 配置
    -- 在这里添加普通的 Neovim 配置
end

-- 设置折叠方法为 indent
vim.opt.foldmethod = 'indent'

-- 启用搜索结果高亮
vim.opt.hlsearch = true

-- 输入搜索模式时,每输入一个字符,自动跳转到第一个匹配的结果
vim.opt.incsearch = true

-- 搜索时忽略大小写
vim.opt.ignorecase = true

-- 如果同时打开了 ignorecase,那么对于只有一个大写字母的搜索词,将大小写敏感,其他情况都是大小写不敏感
vim.opt.smartcase = true

-- 使用系统剪贴板
vim.opt.clipboard = 'unnamedplus'

NeoVim 使用手册

1. 代码执行折叠和展开的操作

  1. 展开所有折叠 :在 Normal 模式下按下 zR,它将触发 VSCodeNotify('editor.unfoldAll'),这将展开当前文件中的所有折叠。
  2. 关闭所有折叠 :在 Normal 模式下按下 zM,它将触发 VSCodeNotify('editor.foldAll'),这将关闭当前文件中的所有折叠。
  3. 展开当前折叠 :在 Normal 模式下按下 zo,它将触发 VSCodeNotify('editor.unfold'),这将展开光标下的折叠。
  4. 关闭当前折叠 :在 Normal 模式下按下 zc,它将触发 VSCodeNotify('editor.fold'),这将关闭光标下的折叠。

2. 内置定义的热键

下面这些命令都是由 VSCode-NVim 插件调用 VSCode 中的命令完成的,仅限于 COMMAND 模式下使用,这些命令在原生的 NVim中也都适用,不同的是它们并不是调用的原生命令接口。

2.1 文件管理命令

命令 描述
:ene 创建新的无标题文件
:e 快速打开文件
:find 按名称搜索文件
:sav 另存为文件
:w 保存当前文件
:q 关闭所有编辑器
:wq 保存当前文件,并关闭活动编辑器
:x 保存当前文件,并关闭活动编辑器
:qa 保存所有文件,并关闭所有编辑器
:wa 保存所有文件,不关闭任何编辑器
:wqa 保存所有文件,并关闭所有编辑器
:xa 保存所有文件,并关闭所有编辑器

2.2 标签相关命令

命令 描述
:tabnew 创建新的无标题文件
:tabe 快速打开文件
:tabf 按名称搜索文件
:tabc 关闭当前的的编辑器
:tabo 关闭其他所有编辑器
:tabp 切换到上一个编辑器
:tabn 切换到下一个编辑器
:tabfirst 切换到第一个编辑器
:tablast 切换到末一个编辑器

2.3 窗口相关命令

命令 描述
:sp 水平拆分编辑器
:vsp 垂直拆分编辑器
:new 水平拆分编辑器,并创建新的无标题文件
:vnew 垂直拆分编辑器,并创建新的无标题文件
:only 关闭所有的编辑器

下面这些热键都是由 VSCode-NVim 插件调用 VSCode 中的命令完成的,原生 NVim 中不存在下面大多数热键。

2.4代码编辑区热键

热键(1) 热键(2) 功能描述
= == 格式化选定内容
gh K 显示悬停
gd C-] 转到定义
gf 转到声明
gH 查看引用
gO 转到符号
C-W gd C-W gf 打开侧边的定义
gD 速览定义
gF 查看声明
tab 切换小部件焦点
C-p 切换上一个建议
C-n 切换下一个建议

2.5 一些 INSERT 模式下定义的热键

热键 描述
C-r [0-9a-z"%#*+:.-=] 从寄存器粘贴内容
C-a 插入之前插入的内容
C-o 切换到NORMAL模式中执行一个命令,然后返回
C-u 删除当前光标当行首前的所有内容
C-w 删除左侧的单词
C-h 删除左侧的字符
C-t 光标向右移动,单位是一个缩进
C-d 光标向左移动,单位是一个缩进
C-j 插入新行
C-c 退出INSTER模式

2.6 一些侧边栏中进行移动的热键

热键 描述
j / k 向下向上移动光标
h / l 打开或关闭项目
Enter 打开项目
gg 返回顶部
G 返回底部
o 切换展开
C-u / C-d 向上或向下翻页
Escape 切换键盘导航

2.7 文件资源管理的热键

热键 描述
r 重命名文件
d 删除文件
y 拷贝文件
x 剪切文件
p 粘贴文件
v 以垂直拆分的方式打开文件
a 创建新文件
S-a 创建新目录
相关推荐
小白用python4 分钟前
pycharm无法创建venv虚拟环境
ide·python·pycharm
Bob99982 小时前
Amlogic S905L3系列盒子 ROM DIY相关
java·javascript·数据仓库·vscode·eclipse·tomcat·vim
Humbunklung2 小时前
Visual Studio Code 使用tab键往左和往右缩进内容
ide·vscode·编辑器
界面开发小八哥3 小时前
智能Python开发工具PyCharm v2025.1——AI层级功能重磅升级
ide·人工智能·python·pycharm·开发工具
geovindu4 小时前
PyCharm 2023升级2024 版本
ide·python·pycharm
pink大呲花5 小时前
设置右键打开VSCode
ide·vscode·编辑器
界面开发小八哥7 小时前
「Java EE开发指南」如何使用MyEclipse的可视化JSF编辑器设计JSP?(一)
java·ide·java-ee·开发工具·myeclipse
水饺编程7 小时前
Visual Studio 技能:调整软件界面布局
ide·visual studio
春蕾夏荷_7282977257 小时前
vscode 使用gitcode团队管理项目
vscode·gitcode
gu208 小时前
怎样将visual studio 2015开发的项目 保存为2010版本使用
ide·visual studio