前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >主流编辑器、IDE 开启 clang-format 自动格式化能力

主流编辑器、IDE 开启 clang-format 自动格式化能力

作者头像
我与梦想有个约会
发布于 2023-10-21 07:49:31
发布于 2023-10-21 07:49:31
1.6K0
举报
文章被收录于专栏:jiajia_dengjiajia_deng

clang-format 是 LLVM 下的一款代码风格格式化工具,它支持多种代码格式化风格,如:Visual Studio, LLVM, Google, Chromium, Mozilla, WebKit。团队中也可以根据配置定义自己的代码格式化风格保存到 .clang-format 配置文件中并放在项目工程目录下提供所有项目参与者使用,但如何让 .clang-format 工作起来呢?本文将讨论各类主流编辑器、IDE 是如何让 .clang-format 配置工作并且在代码粘贴或保存时自动进行格式化。

Visual Studio Code

Visual Studio Code 简称 VSCode,是目前为止从前端到客户端最通用的编辑器,他可以通过各类插件组合成为一个比个别 IDE 都强大的开发工具。VSCode 使用使用 .clang-format 配置只需要安装一个名为 C/C++ Extension Pack 的插件即可,里面包含了必备的 CMake、C++ Tools 等插件。

随后打开 VSCode,点击左上角 File->Preference->Settings:

搜索 Format On Save 关键字,将其勾选起来:

这样当我们打开一个带有 .clang-format 配置的工程时,会自动根据当前工程中的配置文件在编写代码保存时自动格式化代码,效果如下:

你不需要单独安装 clang-format,因为 VSCode 在安装 C++ Tools 插件的时候会自动安装 LLVM 的 clang-format:

并且在设置中搜索 clang-format 相关设置时你可以看到,VSCode 查找 clang-format 的顺序如下:

  1. 你输入的绝对路径
  2. 在环境变量中查找 clang-format
  3. 使用默认自带的 clang-format

所以 VSCode 是有兜底的,无论你是否指定了绝对路径或环境变量中是否有 clang-format。 另外如果你希望项目中所有人都使用相同的配置,可以将 User 相关的配置切换到 Workspace 中,选择 Format On Save 后会自动创建一个 settings.json 的配置文件在项目工程下的 .vscode 文件夹,你可以将这个目录上传到 git 仓库,让大家 clone 下来的代码都带有该配置。Workspace 的优先级高于 User。

Visual Studio

Visual Studio IDE 简称 VS,在安装了 2017 以上版本的 IDE 以后会自动安装 LLVM 工具链中的 clang-format 工具。你只需要在选项设置中将自动格式化打开即可。

这里并没有在保存时自动格式化代码的开关,没办法只能借助第三方插件来实现,在拓展中心中搜索 Format document on Save 安装它就可以在修改代码保存时自动格式化了,效果如下:

其他

待补充

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
使用HAI,基于PyTorch 实现一个基于 Transformer 架构的字符级语言模型
这篇教程将带你一步步在 JupyterLab 中实现一个简单的语言模型。我们将从零开始,使用 PyTorch 实现一个基于 Transformer 架构的字符级语言模型。尽管在实际应用中,大多数人更倾向于使用 Hugging Face 的预训练模型,但本文的目的是让你了解语言模型的基本原理和实现步骤。接下来,我们会讲解数据预处理、模型构建、训练过程以及如何利用模型生成文本,每个环节都附有详细的代码和解释,力求让内容通俗易懂。
不惑
2025/03/26
2970
使用HAI,基于PyTorch 实现一个基于 Transformer 架构的字符级语言模型
十分钟读懂旋转编码(RoPE)
旋转位置编码(Rotary Position Embedding,RoPE)是论文 Roformer: Enhanced Transformer With Rotray Position Embedding 提出的一种能够将相对位置信息依赖集成到 self-attention 中并提升 transformer 架构性能的位置编码方式。而目前很火的 LLaMA、GLM 模型也是采用该位置编码方式。
zenRRan
2023/09/11
6K0
十分钟读懂旋转编码(RoPE)
ChatGLM3 源码解析(三)
ApacheCN_飞龙
2024/03/08
4240
Llama深入浅出
前方干货预警:这可能是你能够找到的最容易懂的最具实操性的学习开源LLM模型源码的教程。
lyhue1991
2023/09/05
2.4K1
Llama深入浅出
Deepseek-V2技术报告解读!全网最细!
深度求索Deepseek近日发布了v2版本的模型,沿袭了1月发布的 Deepseek-MoE(混合专家模型)的技术路线,采用大量的小参数专家进行建模,同时在训练和推理上加入了更多的优化。沿袭了一贯的作风,Deepseek对模型(基座和对话对齐版本)进行了完全的mit协议开源,可以商用。对于算力不是那么充足的开发者,官方提供了API调用的方案,费用更是达到了全场最低!
zenRRan
2025/02/03
1.1K0
Deepseek-V2技术报告解读!全网最细!
Llama也中招,混合精度下位置编码竟有大坑,百川智能给出修复方案
位置编码技术是一种能够让神经网络建模句子中 Token 位置信息的技术。在 Transformer 大行其道的时代,由于 Attention 结构无法建模每个 token 的位置信息,位置编码(Position embedding) 成为 Transformer 非常重要的一个组件。研究人员也提出了各种各样的位置编码方案来让网络建模位置信息,Rope 和 Alibi 是目前最被广泛采纳的两种位置编码方案。
机器之心
2023/09/08
6960
Llama也中招,混合精度下位置编码竟有大坑,百川智能给出修复方案
机器学习|从0开发大模型之模型预训练
继续写《从0开发大模型》系列文章,本文主要介绍预训练过程。 预训练是目的是让模型学习知识,需要将预处理的数据(《机器学习|从0开发大模型之数据预处理》)中生成的 pretrain_data.bin 文件的上下文全部学习到,那预训练怎么做呢?
用户1904552
2025/02/27
1470
机器学习|从0开发大模型之模型预训练
聊聊 从源码来看ChatGLM-6B的模型结构
ChatGLM是transformer架构的神经网络模型,因此从transformer结构入手,分析其源码结构。 transformer结构:
Ryan_OVO
2024/01/07
2.2K0
聊聊 从源码来看ChatGLM-6B的模型结构
LLM 大模型学习必知必会系列(四):LLM训练理论篇以及Transformer结构模型详解
深度学习领域所谓的“模型”,是一个复杂的数学公式构成的计算步骤。为了便于理解,我们以一元一次方程为例子解释:
汀丶人工智能
2024/05/26
1.4K0
LLM 大模型学习必知必会系列(四):LLM训练理论篇以及Transformer结构模型详解
ChatGLM3 源码解析(一)
ApacheCN_飞龙
2024/03/05
5730
位置编码
在transformer中使用了位置编码,为什么需要位置编码。因为对于transformer中的注意力机制而言,交换两个单词,并不会影响注意力的计算,也就是说这里的注意力是对单词位置不敏感的,而单词之间的位置信息往往是很重要的,因此考虑使用位置编码。
西西嘛呦
2022/05/10
2.5K0
【LLM系列之PaLM】PaLM: Scaling Language Modeling with Pathways
PaLM 在decoder-only架构中使用标准的 Transformer 模型架构(即每个时间步只能关注其自身和过去的时间步),并进行以下修改: (1)采用SwiGLU激活函数:用于 MLP 中间激活,因为与标准 ReLU、GELU 或 Swish 激活相比,《GLU Variants Improve Transformer》论文里提到:SwiGLU 已被证明可以显著提高模型效果。
致Great
2023/08/25
9510
【LLM系列之PaLM】PaLM: Scaling Language Modeling with Pathways
一文看懂 LLaMA 中的旋转式位置编码(Rotary Position Embedding)
旋转式位置编码(RoPE)最早是论文[1]提出的一种能够将相对位置信息依赖集成到 self-attention 中并提升 transformer 架构性能的位置编码方式。而目前很火的 LLaMA 模型也是采用该位置编码方式。
BBuf
2023/08/22
5.3K0
一文看懂 LLaMA 中的旋转式位置编码(Rotary Position Embedding)
ChatGLM2 源码解析:`ChatGLMModel`
ApacheCN_飞龙
2023/10/13
5410
ChatGLM2 源码解析:`ChatGLMModel`
多模态大模型篇
在CV方向上,一般我们输入的都是图片,无论这个图片多大,都会resize到一个统一的尺寸。最终经过CNN的提取,变成一个特征向量,那么这个特征向量的维度是一样的。再经过softmax变成一个分类(Class)的概率
算法之名
2023/10/16
9650
多模态大模型篇
大模型KV Cache节省神器MLA学习笔记(包含推理时的矩阵吸收分析)
这里提一下,我维护的几个记录个人学习笔记以及社区中其它大佬们的优秀博客链接的仓库都获得了不少star,感谢读者们的认可,我也会继续在开源社区多做贡献。github主页:https://github.com/BBuf ,欢迎来踩
BBuf
2024/06/18
2.7K0
大模型KV Cache节省神器MLA学习笔记(包含推理时的矩阵吸收分析)
【LLM系列之LLaMA】LLaMA: Open and Efficient Foundation Language Models
LLaMA 是 Meta AI 发布的包含 7B、13B、33B 和 65B 四种参数规模的基础语言模型集合,LLaMA-13B 仅以 1/10 规模的参数在多数的 benchmarks 上性能优于 GPT-3(175B),LLaMA-65B 与业内最好的模型 Chinchilla-70B 和 PaLM-540B 比较也具有竞争力。
致Great
2023/08/25
1K0
【LLM系列之LLaMA】LLaMA: Open and Efficient Foundation Language Models
大模型部署框架 FastLLM 实现细节解析
以chatglm-6b的支持为例,函数入口在 https://github.com/ztxz16/fastllm/blob/master/src/models/chatglm.cpp#L626 ,这里的 input 就是输入的 context(string类型)。然后 https://github.com/ztxz16/fastllm/blob/master/src/models/chatglm.cpp#L633 这行代码对 input 进行 tokenizer encode并构造好inputIds,再构造好attentionMask之后就可以给Forward函数推理,拿到推理结果之后再使用tokenizer进行decode得到输出。
BBuf
2023/08/22
1.2K0
大模型部署框架 FastLLM 实现细节解析
【LLM系列之底座模型对比】LLaMA、Palm、GLM、BLOOM、GPT模型结构对比
GPT 使用 Transformer 的 Decoder 结构,并对 Transformer Decoder 进行了一些改动,原本的 Decoder 包含了两个 Multi-Head Attention 结构,GPT 只保留了 Mask Multi-Head Attention,如下图所示:
致Great
2023/08/25
1.2K0
【LLM系列之底座模型对比】LLaMA、Palm、GLM、BLOOM、GPT模型结构对比
机器学习|从0开始大模型之位置编码
上一篇完成DPO的训练,但是模型的输出效果不好,因此在找原因,于是将理论重新过一遍,以发现每个环节需要优化的地方,本文就是理论知识:《Transformer模型中的位置编码》。
用户1904552
2025/02/27
1610
机器学习|从0开始大模型之位置编码
推荐阅读
相关推荐
使用HAI,基于PyTorch 实现一个基于 Transformer 架构的字符级语言模型
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档