使用 vscode 安装配置 clang-format(代码格式化)

目前,网上能找到的配置教程都是乱教的。他们以C++为语言讲配置,其实clang-format默认就是C++.所以他们在配置时,即是错了。也会以默认C++格式化,也不会提示配置错误。结果他们还不知道他们错在哪?如果让他们配置.CS, .json,估计就不会了。
这里我给个正确的完整配置教程:

  1. 首先安装中间件。在vscode扩展商店里搜索 clang-format ,安装排名第一个。xaver.clang-format.
  2. 用eveythings查找一下 clang-format.exe, 发现最新的扩展 c/c++ 里集成了 clang-format。 这是我电脑上搜索到的目录:
    “D:\Program Files.vscode\extensions\ms-vscode.cpptools-1.12.4-win32-x64\LLVM\bin\clang-format.exe”.
    如果你没找到这个程序,那走第三步。如果有,走第四步。
  3. 其次还要安装真正的格式化工具clang-format.exe。这个工具集成在工具包 LLVM里,下载地址:
    https://github.com/llvm/llvm-project/releases
    这里我选择最新的 “LLVM-14.0.6-win64.exe”. 安装后居然有 2G! 在安装目录里找到 clang-format.exe。提取出来一般能用,不能就把附加的DLL一并提出来。其它可以卸载了。
  4. 把可执行程序的路径添加到 settings.json 文件里。不是工作目录里的,是vscode 的用户目录里。比如我电脑上的目录是:
    “C:\Users\tiandyoin\.vscode\User\settings.json”
  5. 在这个配置文件里添加配置如下:
"files.associations": {
    "*clang-format*": "yaml",
  },
  // clang-format 扩展的配置
  "clang-format.executable": "D:/Program Files/.vscode/extensions/ms-vscode.cpptools-1.12.4-win32-x64/LLVM/bin/clang-format.exe",
  "clang-format.style" : "file:./.Google.cpp.clang-format", // 从指定配置文件读取格式化风格。
  // "clang-format.style" : "file", // 从(当前目录->工作目录->path变量)查找默认配置文件(.clang-format)并读取格式化风格。找不到则使用fallbackStyle, 没有fallbackStyle则默认LLVM,C++.
  // "clang-format.assumeFilename": ".cs", 
  //经测试,assumeFilename 该项有两个作用:
  //(1)在输出配置文件时,给合本选项,确定输出配置文件的language.
  //(2)在读取配置文件时,按后缀名分析取出相应的语言的配置部分来格式化代码。
  //   如 ".cs" 表示使用 language:CSharp 的部分来格式化代码。如果找不到 CSharp部分会报错。默认c++。
  "clang-format.fallbackStyle": "Google",
  "editor.defaultFormatter": "xaver.clang-format",
  // "[cpp]": {
  //   "editor.defaultFormatter": "xaver.clang-format"
  // },
  // C/C++ 扩展的配置
  "C_Cpp.formatting": "Default",

.Google.cpp.clang-format 的代码如下:

---
Language:        Cpp
BasedOnStyle:  Google
Standard: Auto
ColumnLimit:     80
...
  1. 生成.clang-format 配置文件的命令是:
D:\Program Files\.vscode\extensions\ms-vscode.cpptools-1.12.4-win32-x64\LLVM\bin>  clang-format --style=Google --dump-config > ./.clang-format
// 输出 .json 语言的格式化配置文件
D:\Program Files\.vscode\extensions\ms-vscode.cpptools-1.12.4-win32-x64\LLVM\bin> clang-format --style=Google --dump-config --assume-filename=.json > ./.clang-format

输出格式化后文件的命令是:

clang-format --style=file:${workspaceRoot}/xxx.clang-format --assume-filename=.cpp xxx.cqq > xxx2.cqq
// 要自行替换${workspaceRoot}

这里因为程序不认识 .cqq 文件,使用 --assume-filename=.cpp 表示以C++语言格式化 .cqq 文件。
7. 在代码里按ctrl+shift+F 或
全选代码-鼠标右键-使用…格式化代码-选择"Clang-Format"。
8. 测试一下效果
格式化前:

// #include <stdlib.h>
#include <stdio.h>
 
#define MACRO1(x) (++(x))         //fgfg
#define MACRO2(x) (MACRO1(x)+100)     //efee
#define MACRO3(x) (MACRO2(x)+200)
 
class cman{
public:
  int i;
};

int main(void)
{
  int  a = 0; // a
int b = 0;         //b
 //
    b = MACRO3(a);// c
 
    printf("%d\n", b);
 
    return 0;
}

格式化后:


// #include <stdlib.h>
#include <stdio.h>

#define MACRO1(x) (++(x))           // fgfg
#define MACRO2(x) (MACRO1(x) + 100) // efee
#define MACRO3(x) (MACRO2(x) + 200)

class cman {
 public:
  int i;
};

int main(void) {
  int a = 0; // a
  int b = 0; // b
             //
  b = MACRO3(a); // c

  printf("%d\n", b);

  return 0;
}

Ok.本文到此结束。
Tips:
另外有个类似智能提示的扩展:
Clang-Format-Check.
可以自己试试。

第5步是以C++为例子,因为默认是C++,无法测出“配置语言不正确”。下面我换成CSharp的例子。
(1) 安装扩展 mjohns.clang-format. xaver.clang-format 1.9 当前版本没有支持CSharp.
禁用它,避免冲突麻烦。
(2) 安装配置clang-format.exe 同上。
(3) settings.json 里的配置如下:

// clang-format 扩展的配置
  "editor.defaultFormatter": "mjohns.clang-format",
  // "[cpp]": {
  //   "editor.defaultFormatter": "mjohns.clang-format",
  // },
  // "clang-format.executable": "D:/Program Files/.vscode/extensions/ms-vscode.cpptools-1.12.4-win32-x64/LLVM/bin/clang-format.exe",
  "clang-format.executable": "D:/Program Files/LLVM/bin/clang-format.exe", 
  "clang-format.style" : "file:./.Google.cs.clang-format", // 从指定配置文件读取格式化风格。找不到文件会报错。
  // "clang-format.style" : "file", // 从(当前目录->工作目录->path变量)查找配置文件并读取格式化风格。找不到则默认LLVM,C++.
  //经测试,assumeFilename 有两个作用:
  //(1)用于读入配置文件。是在输出配置文件时,给合本选项,确定输出配置文件的language.
  //(2)在读取配置文件里时,按后缀名分析取出相应的语言的配置部分来格式化代码。如 ".cs" 表示使用 language:CSharp 的部分来格式化代码。如果找不到 CSharp部分会报错。默认c++。
  "clang-format.assumeFilename": ".cs", //在vscode里,即使文件后缀名为.cs,也得指定该项。估计是中间件或exe不够完善。指定了该项,其它后缀名文件统统按csharp语言来格式化。
  "clang-format.fallbackStyle": "Google",
  "clang-format.language.csharp.enable": true,
  // C/C++ 扩展的配置
  "csharp.format.enable": true,
  "C_Cpp.formatting": "Default",

./.Google.cs.clang-format 代码如下:

---
Language:        CSharp
BasedOnStyle:  Google
Standard: Auto
ColumnLimit: 50
...


(4) 格式化代码
为是突出assumeFilename的效果,我把要格式的文件名,改成 Command.cqq.
vscode会认为是纯文本
command.cs 改名成  command.cqq
点击它让vscode 认定它是CSharp. 这样才能使用格式化命令。
在这里插入图片描述

在这里插入图片描述
这里把列数限制了
ColumnLimit: 50
按 ctrl+a, ctrl+k,ctrl+f 执行一下试试
得到效果图如下:
在这里插入图片描述
成功按50列换行。

如果有什么不明白的地方,请留言讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/15102.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

23种设计模式之观察者模式(黑马程序员)

观察者模式 一、概述二、结构三、实现四、总结在最后 一、概述 观察者模式又被称为发布-订阅模式(Publish/Subscribe)模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时&#xff0c;会通知所有…

中级软件设计师备考---操作系统和计算机网络

【因为我自己是软件工程专业毕业的学生&#xff0c;所以408里的这两门课都比较熟悉&#xff0c;因此这一部分只放一些我印象不是完全深刻的知识。】 目录 操作系统前驱图与PV操作死锁的预防与避免绝对路径和相对路径缺页中断的某种练习题 计算机网络网络规划与设计特殊含义的I…

【FFTW库】编译生成 x86、arm 环境下的FFTW库

FFTW是一个快速计算离散傅里叶变换的标准C语言程序集&#xff0c;可计算一维或多维实和复数据以及任意规模的DFT。下面主要介绍的是 x86 环境下 FFTW库的编译过程&#xff0c;arm环境下的编译过程和FFTW类似&#xff0c;不同之处在于需要手动指定 编译环境 和 编译器。 FFTW有…

2023年五月份图形化一级打卡试题

活动时间 从2023年5月1日至5月21日&#xff0c;每天一道编程题。 本次打卡的规则如下&#xff1a; 小朋友每天利用10~15分钟做一道编程题&#xff0c;遇到问题就来群内讨论&#xff0c;我来给大家答疑。 小朋友做完题目后&#xff0c;截图到朋友圈打卡并把打卡的截图发到活动群…

OkHttp3源码解析 - 连接机制和缓存机制

系列文章目录 第一章 OkHttp3源码解析 - 请求流程 第二章 OkHttp3源码解析 - 拦截器 第三章 OkHttp3源码解析 - 连接机制和缓存机制 文章目录 系列文章目录前言一、连接机制1.1 创建连接1.2 连接池 二、缓存机制2.1 缓存策略2.2 缓存管理 彩蛋致谢 前言 本文基于okhttp3.12.1…

三大本土化战略支点,大陆集团扩大中国市场生态合作「朋友圈」

“在中国&#xff0c;大陆集团已经走过30余年的发展与耕耘历程&#xff0c;并在过去10年间投资了超过30亿欧元。中国市场也成为了我们重要的‘增长引擎’与‘定海神针’。未来&#xff0c;我们将继续深耕中国这个技术导向的市场。”4月19日上海车展上&#xff0c;大陆集团首席执…

ospf综合实验

目录标题 第一步&#xff1a;网段划分第二步&#xff1a;配置区域0路由器接口和环回第三步&#xff1a;配置区域0缺省第四步&#xff1a;配置MGRE环境第五步&#xff1a;配置区域0用户网段第六步&#xff1a;配置区域1路由器及环回第七步&#xff1a;配置区域2的路由器及环回第…

低代码开发重要工具:jvs-logic(逻辑引擎)基础原理与功能架构

逻辑引擎介绍 逻辑引擎是一种能够处理逻辑表达式的程序&#xff0c;它能够根据用户输入的表达式计算出表达式的值。在实际应用中&#xff0c;逻辑引擎通常被用于处理规则引擎、决策系统、业务规则配置等领域&#xff0c;具有广泛的应用前景。 原理与核心功能描述 基础原理 …

走进社区客户端测试 | 得物技术

0.引言 社区 C 端质量体系建设思考&#xff1f; 询问一下 ChatGPT 1、关于社区客户端 1.1 社区端上功能 得物首页 搜索、发布、关注流、推荐流、沉浸式单列流、活动 tab、其他二级频道 tab 动态详情页 图文、视频、专栏、点评 私域 个人/他人主页、通讯录好友、微博好友…

如何实现电脑通过手机上网?1分钟搞定!

案例&#xff1a;电脑没网时&#xff0c;如何通过手机上网&#xff1f; 【想用电脑看电影&#xff0c;但是附近没有Wi-Fi。朋友说可以说电脑可以通过手机上网&#xff0c;但我们都不知道具体如何操作&#xff0c;有没有小伙伴可以教教我们。】 在没有Wi-Fi或有线网络接入时&a…

服务(第十二篇)LVS-DR模式

数据包流向分析&#xff1a; &#xff08;1&#xff09;客户端发送请求到 Director Server&#xff08;负载均衡器&#xff09;&#xff0c;请求的数据报文&#xff08;源 IP 是 CIP,目标 IP 是 VIP&#xff09;到达内核空间。 &#xff08;2&#xff09;Director Server 和 Re…

无良公司把我从上家挖过来,白嫖了六个月,临近试用期结束才说不合适,催我赶紧找下家!...

职场套路多&#xff0c;一不小心就会掉坑&#xff0c;一位网友讲述了自己的遭遇&#xff1a; 今天被领导催促离职了&#xff0c;当时就是这个领导把他从别的公司挖过来。这家公司催得太急&#xff0c;为了投奔这里&#xff0c;他和上家的HR都闹翻了&#xff0c;上家总监挽留他&…

时隔两个多月,一起来看ChatGPT现况如何?

ChatGPT这股风吹了两个多月&#xff0c;时至今日&#xff0c;各平台上与ChatGPT相关的文章&#xff0c;到现在依旧拥有着不小的流量。三月中旬上线了ChatGPT-4&#xff0c;与我们的文心一言前后脚发布&#xff0c;而后阿里的“通义千问”也展现了不俗的实力&#xff0c;那到现在…

图形界面GUI相关概念GLX/Wayland/X11/DRM/DRI

1. GUI图形界面是什么 GUI是graphical user interface的缩写&#xff0c;图形用户接口&#xff0c;实现了基本的WIMP&#xff08;windows&#xff0c;icons&#xff0c;menus&#xff0c;pointer&#xff09;。一个GUI的基本组成&#xff1a;display server实现windowing syst…

03_线程间通信

面试题&#xff1a;两个线程打印 两个线程&#xff0c;一个线程打印1-52&#xff0c;另一个打印字母A-Z打印顺序为12A34B...5152Z&#xff0c;要求用线程间通信 public class Demo01 {public static void main(String[] args) {ShareData05 shareData05 new ShareData05();new…

分布式事务处理方案及分布式锁相关

​ 本文偏理论 一、事务处理 1、事务处理的四个特性ACID Atomicity 原子性: 对于数据库的修改&#xff0c;全部执行or全部不执行 Consistency 一致性: Isolation 隔离性 : 亦称为串行化&#xff0c;防止事务间操作混淆&#xff0c;需要串行化或者序列化请求&#xff0c;使…

隐私权限是什么

导读&#xff1a; 隐私权在现代社会对于人们而言是重要的人格权&#xff0c;而随着互联网技术的发展&#xff0c;实践中侵犯隐私权的行为很常见。那么隐私权限是什么&#xff1f;侵犯隐私权的行为有哪些&#xff1f;侵犯他人隐私权要负什么法律责任&#xff1f;接下来将由找法…

使用docker搭建RocketMQ(非集群搭建官方镜像)

之前在使用 RocketMQ 官方的包在搭建的时候&#xff0c;发现好多问题&#xff0c;什么修改内存大小&#xff0c;然后启动 broker 报错&#xff0c;类似 service not available now, maybe disk full 等等… 最后决定还是重新用 docker 搭建下&#xff0c;感觉这样子玩坏了&…

微信仿真平台的设计和实现(设计+源码)_kaic

摘要 现如今&#xff0c;科技的发展带动着环保方式的更新&#xff0c;Internet是一个不断的开展和不停的扩充数据潮流&#xff0c;有了它&#xff0c;我们可以快速、容易地在世界的任何角落进行沟通&#xff0c;获取更多的信息与资料。Internet可以提供大量信息资源和文案数据库…

全国各省份影像下载地址(11级别)

安徽省https://pan.baidu.com/s/1fMuWhVZFvSH1UlCGU1bPpA?pwdeasy澳门特别行政区https://pan.baidu.com/s/1aU2D4o2bfeHTJTb6AkUtVA?pwdeasy北京市https://pan.baidu.com/s/1eaNzAWm1pUx_rjhD_wHHhA?pwdeasy福建省百度网盘 请输入提取码甘肃省https://pan.baidu.com/s/1mAqf…