/nvim

NeoVim 配置

Primary LanguageLua

某春雨自用的 NeoVim 配置

本仓库是我自用的 NeoVim 配置,使用 Lua 进行配置。

基于 VimScript 的最后一次配置在 e50327e 提交处,相应的配置说明写在我的博客 NeoVim 基本配置 中,有需要的小伙伴请自行移步。:warning: VimScript 的配置与当前 Lua 的配置不同。

目录

安装前的准备

本配置文件适配最新版 NeoVim,请确保其版本不低于 0.7。

为确保功能正常,请确保 PythonNode.js 已正确安装,然后在命令行补充以下功能:

pip install pynvim
# yay -S npm
sudo npm install -g neovim

为确保 Telescope 等插件功能正常,可通过包管理器选择性安装以下工具:

插件和 LSP 应当在首次启动时自动安装,如果未能正确安装,请确保能够正常访问 GitHub 后重新启动,或手动运行 :Lazy 后按 U 进行同步。插件安装完成后可使用 :checkhealth 检查依赖是否正常。

vimtex 配置使用 zathura 作为默认的 PDF 阅读器,可通过包管理器安装。

对于 ArchLinux,上述工具可以采用以下命令安装:

yay -S fd ripgrep xclip zathura zathura-mupdf
yay -S jre-openjdk          # Neovim 的 LTeX LSP 需要 Java 环境

基本键位映射

本配置文档的 <leader><localleader> 均设置为 空格 ,其他组合键如下,注意区分大小写。

功能
光标移动
j, k 基于屏幕行的上下移动
gj, gk 基于实际行的上下移动
J, K 基于屏幕行向下、向上跳转 5 行
0, $ 普通模式下跳转到屏幕行的行首、行尾(可视模式下为实际行)
保存与退出
<leader>w 保存
<leader>q 退出(未保存时会报错,不会退出)
<leader>Q 忽略改动并退出
<leader>W 保存并退出
搜索
= 跳转到下一个结果并使其居中于屏幕
- 跳转到上一个结果并使其居中于屏幕
<leader><CR> 取消搜索结果高亮
分屏
sh 向左新开一个分屏
sj 向下新开一个分屏
sk 向上新开一个分屏
sl 向右新开一个分屏
<leader>h 跳转到左侧分屏
<leader>j 跳转到下面分屏
<leader>k 跳转到上面分屏
<leader>l 跳转到右侧分屏
<leader>H 将当前分屏移动到最左侧
<leader>J 将当前分屏移动到最底端
<leader>K 将当前分屏移动到最顶端
<leader>L 将当前分屏移动到最右侧
<up> 增大分屏高度
<down> 减小分屏高度
<right> 增大分屏宽度
<left> 减小分屏宽度
标签
Ta 新开一个标签页
Th 跳转到左侧标签页
Tl 跳转到右侧标签页
其他
<leader>o 向下插入空行
<leader>O 向上插入空行
<leader>F 使用 LSP 格式化代码

插件键位映射

本配置文件所涉及相关插件的键位映射和基本用法如下表所示。

说明
Lazy
<leader>lz 查看插件
LSP
<ctrl>j 向上翻阅帮助文档
<ctrl>k 向下翻阅帮助文档
gitsigns
<leader>gd 查看当前位置改动
<leader>gj 跳转到下一处改动
<leader>gk 跳转到上一处改动
<leader>ga 将当前位置的改动添加到暂存区
<leader>gA 将当前文件的改动添加到暂存区
<leader>gu 将当前位置的改动从暂存区内撤销
<leader>gb 查看当前位置的提交信息
<leader>gB 查看上一次提交信息
lightspeed
L 向后查找并跳转:输入关键字符后自动跳转(临时替换字符以确保跳转唯一)
H 向前查找并跳转(同上)
undotree
<leader>u 打开改动历史:结合分屏跳转、选中历史节点后可以回滚
luasnip
<ctrl>j 手动展开代码片段、跳转到下一个断点
<ctrl>k 跳转到上一个断点
vimtex
<localleader>li 查看当前文档信息
<localleader>lt 打开目录
<localleader>ll 编译文档
<localleader>lv 打开编译后的文档
<localleader>lc 清理编译产生的临时文件
<localleader>lC 清理所有非必要文件
dse 删除周围环境
dsc 删除周围命令
ds$ 删除行内数学
dsd 删除周围定界符
cse 更改周围环境
csc 更改当前命令
cs$ 更改行内数学
csd 更改周围定界符
tsc 切换带星号的命令
tse 切换带星号的环境
tsd 切换周围定界符
<F7> 为选择的文本添加命令
<F8> 为周围定界符添加 \left\right
vim-markdown-toc
:GenTocGFM<CR> 在当前位置插入 GitHub 风格的目录,并自动更新(未映射新键位)
markdown-preview
<leader>mp 打开/关闭预览
comment
<ctrl>/ 注释当前行或注释选中代码
tabular
<leader>a 将选中内容依据给定符号对齐:先选中文本,触发后给定符号并回车即可
nvim-tree
<leader>e 打开文件浏览器
bufferline
tt 根据标签页提示字符选择标签页
th 跳转到左侧标签页
tl 跳转到右侧标签页
tq 根据标签页提示字符关闭标签页(不保存修改)
td 关闭当前标签页
telescope
<leader>ff 查找文件
<leader>fg 查找关键字
<leader>fb 查找打开的缓冲区
<leader>fh 查找帮助文档
renamer
<F2> 批量重命名变量
toggleterm
<F4> 打开、关闭终端(默认为底部终端)
<leader>r 将当前行或所选内容发送到终端并执行
trouble
<leader>t 检查并预览当前文件的错误和警告

参考与致谢

特别感谢 David Chen (哔哩哔哩:TheCW)在哔哩哔哩上对 [Neo]Vim 的详细介绍和展示,这是促使我入坑的主要因素;同时也感谢他分享的配置文档。相关链接如下:

非常感谢 Elijan Mastnak 关于使用 NeoVim 编辑 LaTeX 的系列文章,这为我配置 VimTeX 时提供了重要的参考。相关链接如下:

Dave Lageawesome-neovim 为本配置使用的插件提供了参考。