VSCode Neovim Extension

文章目录

  • 配置与安装 NeoVim
    • 1. 安装 NeoVim
    • 2. 解决 NeoVim 中文输入法的问题
    • 3. 配置 `Ctrl+S` 保存文件并退出insert模式
    • 4. 取消搜索之后的高亮
    • 5. 我的配置
  • NeoVim 使用手册
    • 1. 代码执行折叠和展开的操作
    • 2. 内置定义的热键
      • 2.1 文件管理命令
      • 2.2 标签相关命令
      • 2.3 窗口相关命令
      • 2.4代码编辑区热键
      • 2.5 一些 INSERT 模式下定义的热键
      • 2.6 一些侧边栏中进行移动的热键
      • 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 中需要添加以下设置:
"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 的插件,影响速度。
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 中添加以下设置:

-- 配置输入法切换的能力
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

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

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

4. 取消搜索之后的高亮

:nohlsearch
:noh

5. 我的配置

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

  1. VSCode NeoVim 折叠代码快捷键失效
  2. NeoVim 搜索忽略大小写
  3. NeoVim 使用系统剪贴板
-- 检查是否存在 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)功能描述
===格式化选定内容
ghK显示悬停
gdC-]转到定义
gf转到声明
gH查看引用
gO转到符号
C-W gdC-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创建新目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/568295.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OceanBase 开发者大会 - 见闻与洞察

文章目录 前言主论坛见闻技术专场见闻产品技术专场技术生态专场 同行论道启发互动展区写在最后 前言 4 月 20 日&#xff0c;我有幸受邀参加了第二届 OceanBase 开发者大会。 50 余位业界知名数据库大咖和数据库爱好者&#xff0c;与来自全国近 600 名开发者相聚。共同探讨一体…

【ks爬虫软件】把快手评论API接口封装成GUI采集工具

用Python开发爬虫采集软件&#xff0c;可自动抓取快手评论数据&#xff0c;且包含二级评论。 快手的评论接口URL&#xff1a; # 请求地址 url https://www.kuaishou.com/graphql开发者模式分析过程&#xff1a; 进而封装成GUI界面软件&#xff0c;如下&#xff1a; 软件效…

排序算法:顺序查找

简介 顺序查找&#xff08;也称为线性查找&#xff09;是一种简单直观的搜索算法。按照顺序逐个比较列表或数组中的元素&#xff0c;直到找到目标元素或搜索完整个列表。 应用场景 数据集比较小&#xff0c;无需使用复杂的算法。数据集没有排序&#xff0c;不能使用二分查找…

重磅发布 | 《网络安全专用产品指南》(第一版)

2017年6月1日&#xff0c;《中华人民共和国网络安全法》正式实施&#xff0c;明确规定“网络关键设备和网络安全专用产品应当按照相关国家标准的强制性要求&#xff0c;由具备资格的机构安全认证合格或者安全检测符合要求后&#xff0c;方可销售或者提供。国家网信部门会同国务…

小程序AI智能名片S2B2C商城系统:解锁内容深耕新境界,助力品牌企业高效定制内容策略

在数字化时代&#xff0c;内容营销已成为品牌企业获取市场份额、增强用户黏性的关键武器。然而&#xff0c;面对海量的互联网信息和复杂多样的社交媒体平台&#xff0c;如何有效地深耕内容&#xff0c;成为众多品牌企业面临的难题。 传统的内容分类与识别方式&#xff0c;往往依…

【SpringCloud】Consul-服务注册中心及配置中心快速入门

【SpringCloud】Consul-服务注册中心及配置中心快速入门 文章目录 【SpringCloud】Consul-服务注册中心及配置中心快速入门1. 下载安装及启动2. 服务注册2.1 引入依赖2.2 yml配置2.3 启动类配置2.4 测试 3. 服务配置3.1 引入依赖3.2 yml配置3.3 创建配置文件3.4 动态刷新配置3.…

(超级详细)JAVA之Stream流分析-------持续更新喔!!!

学习目标&#xff1a; 掌握 Java Stream流的相关api 掌握 Java Stream流的基本实现 掌握 java Stream流的使用场景 代码已经整理上传到了gitee中&#xff0c;有需要的小伙伴可以取查看一下源码点个小心心喔 大家也可以帮我提交一点案例喔&#xff01;&#xff01;&#xff01;&…

水平越权,垂直越权

水平越权和垂直越权 水平越权 首先自己创建一个账号 然后在自己的修改密码&#xff0c;抓包&#xff0c;修改用户名等 但一般都会固定&#xff0c;它会固定当前用户名 垂直越权 不用登录就可以删除 当我们复制管理员的删除地址&#xff0c;然后访问它 它会跳出登录地址&#…

美国签证证件照规格要求(51mm*51mm)

美国签证证件照规格要求&#xff08;51mm*51mm&#xff09;

解码数据世界:统计学入门与应用指南

引言 统计学可以被定义为研究数据的科学&#xff0c;它涉及到数据的收集、分析、解释和呈现。其目标是从数据中提取有意义的信息&#xff0c;并使用这些信息来做出推断与决策。 统计学主要分别以下几个主要领域&#xff1a; 描述性统计&#xff1a;使用图表、图形和其他工具…

计算二维主应力的前端界面

<!DOCTYPE html> <html> <head> <title>二维主应力</title> </head> <body> <h2>计算二维主应力</h2> <form> <label for"input1">σ_1(Mpa):</label> <input type"t…

【数据结构】stack queue —— 栈和队列

前言 这阵子一直在学数据结构&#xff0c;知识点消化地有点慢导致博客一直没写&#xff0c;现在总算是有时间歇下来补补前面落下的博客了。从现在起恢复周更&#xff0c;努努力一周两篇也不是梦……闲话少说&#xff0c;今天就让我们一起来认识栈和队列 1. 栈的介绍和使用 栈…

《HCIP-openEuler实验指导手册》1.4 Apache MPM工作模式调整

MPM介绍 二、配置步骤 查看MPM当前工作模式 方法一&#xff1a; httpd -M | grep mpm方法二&#xff1a; 浏览器访问&#xff1a;http://IP:端口/server-status 方法三&#xff1a; cat /etc/httpd/conf.modules.d/00-mpm.conf查看 LoadModule mpm_event_module modules/mo…

C语言 字符类型

下面 我们来说字符类型 我们来看这个 保险单 金额 和 总额 都可以用数字类型 而性别则需要字符型 字符数据的存储 – ASCI码 字符类型 char 就是专为存储字符(如字母&#xff0c;标点和数字)而设计的类型。 使用单引号包含单个字符或转义字符去表示一个 char 类型的常量。 …

371D - Vessels

思路&#xff1a;用并查集维护&#xff0c;如果当前容器没有满&#xff0c;就指向自己&#xff0c;否则指向下一个容器。 这样就可以快速 find 到下一个没有满的容器&#xff0c;从而模拟询问 1。 代码&#xff1a; void solve(){int n;cin >> n;vector<int>p(n …

JRT1.5发布演示

JRT1.5演示视频 这是一次思想的解放&#xff0c;这是一次自我的挑战&#xff0c;这是一次涅槃重生。信创、安可、Linux、麒麟、UOS、King、PGSQL、ARM、Java围绕在我周围。JRT在DotNetCore的基础上完成了重生。对我而言&#xff0c;它不仅仅是一套框架那么简单&#xff1b;它更…

探索嵌入式系统:快速入门指南概览

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

【数据结构(邓俊辉)学习笔记】向量03——常规向量

文章目录 0.概述1.元素访问2.置乱器3.判等器与比较器4.无序查找4.1 判等器4.2 顺序查找4.3 实现4.4 复杂度 5. 插入5.1 算法实现5.2 复杂度分析 6. 删除6.1 区间删除6.2 单元删除6.3 复杂度 7. 唯一化7.1 实现7.2 正确性7.3 复杂度 8. 遍历8.1 实现8.2 复杂度 9. 总结 0.概述 …

CUDA线程管理

核函数在主机端启动时&#xff0c;执行会转移到设备上&#xff0c;并且将控制权转移回主机。当核函数在GPU上运行时&#xff0c;主机可以运行其他函数。因此&#xff0c;主机与核函数是异步的。 此时&#xff0c;设备端也就是GPU上会产生大量的线程&#xff0c;并且每个线程都…

手势估计 | 使用TensorRT实现的实时手势估计+手势分类

项目应用场景 面向手势识别场景&#xff0c;项目具有实时手势识别 手势分类功能&#xff0c;采用 TensorRT 进行 GPU 加速推理&#xff0c;可通过手势识别进行远程控制。 项目效果 项目细节 > 具体参见项目 README.md (1) 安装依赖 git clone https://github.com/NVIDIA-…