前言
环境
我现在用的是win10,这点要注意,因为在这上面可能需要额外的配置。
nvim version:0.95
LazyVim 配置
首先,我开启了这几个额外功能:
LazyVim的自动格式化是属于额外功能,需要在:LazyExtras
里面开启。因为我在写C++
时,发现LazyVim在保存之后会自动将代码格式化,但其格式时的缩进格式是2个空格,着不符合我的要求。
配置
C/C++文件的缩进宽度
由于LazyVim的默认配置将一个tab
的宽度设置为了2个空格,我们在进行设置格式化之前需要先设置这个选项,不然写代码的体验非常不好,比如格式化后是4个空格,但是一回车发现出现的是2个空格的缩进,这样产生了混乱。
在lua/config/autocmds.lua
文件中添加如下代码:
vim.api.nvim_create_autocmd({"FileType"}, {
pattern = {"c", "cpp", "md", "txt", "c.snippets", "cpp.snippets"},
callback = function()
vim.b.autoformat = true
vim.opt_local.expandtab = true
vim.opt_local.tabstop = 4
vim.opt_local.shiftwidth = 4
vim.opt_local.softtabstop = 4
end,
})
自动格式化
LazyVim的自动格式化依赖于conform.nvim
,而C/C++文件的自动格式化是使用的clang-format
工具,这个工具可以使用:Mason
安装。
进到Mason安装界面,按下Ctrl+f
,在出现的界面中键入c并按回车,就可以找到了。
注意::clang-format
的安装依赖python和pynvim,这在win环境上需要进行一些设置
(补充)在win10上为nvim设置python环境
在这里默认已经在win10上安装了python3的环境。不过要注意安装的来源,如果是从微软应用商店里面安装的python,nvim可能出现问题,会识别不到:
因此我是用官网上的python安装包,重新安装了一遍,在安装时注意:
- 勾选为所有用户安装
安装完成重启终端检测Python是否已经安装成功,键入which python
查看安装位置。
在终端中输入:pip install pynvim
安装pynvim
包。
随后在lua/config/option.lua
文件中添加如下
if vim.fn.has("windows") == 1 then
vim.g.python3_host_prog =
"path/to/python.exe"
end
字符串中的值就是python 的安装路径,并在其后加上/python.exe"
重启nvim,运行:check
检查环境:
即可确认nvim的python环境配置完成
配置clang-format
在lua/plugins/conform.lua
文件夹中添加如下:(如果没有就新建)
return {
{
"stevearc/conform.nvim",
optional = true,
opts = {
formatters_by_ft = {
["c"] = { "clang_format" },
["cpp"] = { "clang_format" },
["c++"] = { "clang_format" },
},
formatters = {
--clang-format = {
-- prepend_args = {"-style=google"},
--},
},
},
},
}
在这里注意是"clang_format"
而不是"clang-format"
重启nvim,打开一个C/C++文件,输入:ConformInfo
如果提示ready
即配置完成。
注意: 如果出现unavailable
,去检查一下上述说的"clang_format"
的拼写。
在你的C/C++工作目录添加你自定义的.clang-format
文件即可,示例:
---
# We'll use defaults from the LLVM style, but with 4 columns indentation.
BasedOnStyle: LLVM
IndentWidth: 4
---
Language: Cpp
# Force pointers to the type for C++.
DerivePointerAlignment: false
PointerAlignment: Left
---
编辑并保存一个C/C++
文件,即可看到效果: