VSCode Neovim Extension

本文详细介绍了如何在VSCode中安装和配置NeoVim,包括中文输入法的处理、Ctrl+S快捷键的设置、代码折叠操作以及VSCode插件的管理和使用。还列出了NeoVim的常用热键和配置选项。
摘要由CSDN通过智能技术生成

配置与安装 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创建新目录

NeoVim 常用的配置~\.config\nvim

" Config file for vscode neovim plugin:
" https://marketplace.visualstudio.com/items?itemName=asvetliakov.vscode-neovim

" Vim pluggin manager requirement:
" https://github.com/junegunn/vim-plug

call plug#begin()

Plug 'tpope/vim-surround'	" 删除、更改和添加周围环境
Plug 'wellle/targets.vim'	" 文本对象增强

call plug#end()


autocmd InsertLeave * :silent exe '!C:\\Program Files\\Im Select\\im-select.exe 1033'	" 在退出插入模式时自动切换到英文输入法

nnoremap zR <Cmd>call VSCodeNotify('editor.unfoldAll')<CR>	" 展开所有折叠
nnoremap zM <Cmd>call VSCodeNotify('editor.foldAll')<CR>	" 关闭所有折叠
nnoremap zo <Cmd>call VSCodeNotify('editor.unfold')<CR>		" 展开当下折叠
nnoremap zc <Cmd>call VSCodeNotify('editor.fold')<CR>		" 关闭当下折叠

let g:clipboard = g:vscode_clipboard	" 使用 VS Code 的剪贴板 API

set foldmethod=indent 		" 将会根据文本中的缩进水平来确定代码块的开始和结束,从而进行折叠
set hlsearch				" 高亮显示搜索结果
set incsearch				" 输入搜索模式时,每输入一个字符,自动跳转到第一个匹配的结果
set ignorecase              " 忽略大小写进行搜索
set smartcase               " 如果搜索模式包含大写字符,则覆盖 'ignorecase' 设置
set nohls                   " 不要高亮显示搜索结果
set fileformat=unix         " 将行尾样式设置为 LF
set clipboard+=unnamedplus  " Share system clipboard
set shellslash              " 在路径中使用斜杠而不是反斜杠

  • 34
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
VSCODE C extension 是 Visual Studio Code 的一个扩展,用于在 VS Code 中编写和调试 C/C++ 代码。这个扩展包含了一些必要的插件,例如 C/C++、C/C++ Themes、CMake、CMake Tools 和 Better C++ Syntax 等,使得编写 C/C++ 项目更加方便。 如果想要更好地控制 C/C++ 扩展,可以创建一个 c_cpp_properties.json 文件,通过修改该文件可以更改一些设置,比如编译器的路径、包含路径和 C++ 标准等。这样可以根据自己的需求进行定制化配置。 另外,使用 VSCODE C extension 还可以在 Linux 上进行 C/C++ 的开发。通过在 VS Code 中安装相应的扩展功能,可以在 Linux 系统上编写和调试 C/C++ 代码,提供了更多的开发选项和便利性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [VSCode的C/C++扩展功能](https://blog.csdn.net/qq_28087491/article/details/123049870)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [资深工程师 VSCode C/C++ 必备开发插件](https://blog.csdn.net/qq_24130227/article/details/124751545)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值