配置LazyVim的C/C++代码自动格式化

前言

环境

我现在用的是win10,这点要注意,因为在这上面可能需要额外的配置。
nvim version:0.95

LazyVim 配置

首先,我开启了这几个额外功能:
LazyVimExtras
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
进到Mason安装界面,按下Ctrl+f,在出现的界面中键入c并按回车,就可以找到了。
注意:clang-format的安装依赖python和pynvim,这在win环境上需要进行一些设置

(补充)在win10上为nvim设置python环境

在这里默认已经在win10上安装了python3的环境。不过要注意安装的来源,如果是从微软应用商店里面安装的python,nvim可能出现问题,会识别不到:
notfoundpython因此我是用官网上的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++文件,即可看到效果:

main


参考文档

  1. Formatting LazyVim
  2. Clang-format格式化及配置参数-CSDN博客
  3. Make conform load the .clang-format file · LazyVimLazyVim · Discussion 1700 · GitHub
  4. LazyVim将缩进从2个空格改为4个空格 - 知乎
  5. 记录LazyVim安装使用过程中解决的一些问题 - 知乎
  6. Lazyvim 从零开始配置 - Flyan Lu’s Blog
  • 24
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值