前言

在配置nvim插件的时候遇到了很多的问题,现在记录下来防止以后重复工作,整个配置放在了BUAA-makima/nvim (github.com),其中大部分是根据彭启阳同学在OS课程分享的配置更改的。

1. nvim-treesitter

nvim-treesitter是一款具有代码高亮增量选择代码格式化以及折叠代码块的功能,后面三个我暂时还没用上。

在安装语言解析器(parser)的时候,对于yamlhtml两种语言的时候一直出现错误,报错信息大概是Impossible to load parser for html: Failed to load parser

后面在issue里面找到了相似的问题,原因就是这两种语言在解析器里会使用c++,需要c的标准库,然后nvim自带的libstdc-6.dll和gcc的冲突,解决方法就是改变编译器,zig或者clang都可以。

1
require('nvim-treesitter.install').compilers = {"zig", "gcc", "clang"}

2. 内置终端

在Windows下nvim的内置终端选择的是cmd,用着很不舒服,可以通过以下命令将其改成powershell。

1
2
3
4
5
6
shell = vim.fn.executable "pwsh" == 1 and "pwsh" or "powershell",
shellcmdflag = "-NoLogo -NoProfile -ExecutionPolicy RemoteSigned -Command [Console]::InputEncoding=[Console]::OutputEncoding=[System.Text.Encoding]::UTF8;",
shellredir = "-RedirectStandardOutput %s -NoNewWindow -Wait",
shellpipe = "2>&1 | Out-File -Encoding UTF8 %s; exit $LastExitCode",
shellquote = "",
shellxquote = "",

3. nvim-tree

nvim-tree是一款文件管理的插件,可以显示git等信息。

但是在文件排序的时候默认会根据字典序排,如果遇到数字的话就会出现1,10,2这样的顺序,根据issue配置就可以解决这个问题了。

4. code_runner

code_runner是一款快速运行文件或者项目的插件,通过参数设置可以配置对应文件或者项目的运行命令。

1
2
3
4
5
6
7
8
9
filetype = {
c = 'cd %:p:h && gcc -g -Wall -lm -std=c11 % -o .\\bin\\$fileNameWithoutExt && .\\bin\\$fileNameWithoutExt',
cpp = 'cd %:p:h && g++ -g -O2 -Wall -lm -std=c++17 % -o .\\bin\\$fileNameWithoutExt && .\\bin\\$fileNameWithoutExt',
lua = 'lua',
python = 'python',
sh = 'bash',
dosbatch = 'cd $dir && %',
},

我目前只需要单文件的运行,所以并不是很复杂,其中带$的参数都是code_runner的内置变量,dir代表打开文件的目录,fileName代表文件名,file代表文件路径,fileNameWithoutExt代表没有后缀的文件名。%等是vim的内置变量,详见vim 文档。需要注意的是如果不使用code_runner的内置变量那么命令最后会自己加上文件名。