文档章节

Vim与clang-format

DB_Terrill
 DB_Terrill
发布于 05/20 17:44
字数 488
阅读 17
收藏 0

前一段时间因工作需要参与了一个开源项目,在向github提交代码后提示格式校验失败。

项目的管理者告知,要想修改的代码能入库需要使用Clang-Format校验。

需要使用下面的命令对上次的修改重新格式化下:

git show HEAD | clang-format-diff-3.9 -p 1 -style=file -i

通过调查了解到此开源项目是使用Clang Tools来管理代码的格式,可使用ClangCheck来校验代码的格式问题,使用clang-format来格式化代码。

我们为什么不可以在IDE中直接集成Clang工具自动格式化代码吗?

我使用的IDE是VIM,我相信如此强大的工具必然能实现此功能,在官网http://clang.llvm.org/docs/ClangTools.html 我如愿的找到了资料。

首先需要安装clang-format

sudo apt-get install clang-format-3.9
ln -s /usr/bin/clang-format-3.9 /usr/bin/clang-format

然后

cd ~/sbin;
wget https://raw.githubusercontent.com/llvm/llvm-project/master/clang/tools/clang-format/clang-format.py

再修改~/.vimrc来配置clang-format.py使用方法,增加以下内容

"""""""""""""""""""""""""""""""""""""""""""""""
" Seting clang-format
"""""""""""""""""""""""""""""""""""""""""""""""
map <C-F> :pyf ~/sbin/clang-format.py<cr>
imap <C-F> <c-o>:pyf ~/sbin/clang-format.py<cr>
function! Formatonsave()
    let l:formatdiff = 1
    pyf ~/sbin/clang-format.py
endfunction
autocmd BufWritePre *.c,*.h,*.cc,*.cpp call Formatonsave()

这样当编辑*.c,*.h,*.cc,*.cpp时,会自动格式化,也可以是使用ctrl+f格式化一行或者选中的区域。

clang-format默认是使用llvm格式,用户也可根据需要配置格式化参数。

可行在工作路径的最上层路径,使用以下方式生成.clang-format文件,然后可根据需要修改参数。

clang-format -style=llvm -dump-config > .clang-format

-style=xxxx  可使用LLVM, Google, Chromium, Mozilla, WebKit

© 著作权归作者所有

上一篇: android IPC通信
下一篇: 名词
DB_Terrill
粉丝 23
博文 145
码字总数 27755
作品 0
大连
其他
私信 提问
VSC 使用Clang-format 时报错:write EPIPE而不能使用自动格式

问题 VSC 1.34.0 使用Clang-format 时报错:write EPIPE而不能使用自动格式 解决方法 填写clang-format运行位置的绝对路径 "clang-format.executable": "C:\Users\Administrator.vscode\exte......

SamXIAO
06/01
0
0
vim c/c++智能补全插件

我很喜欢vim,而且一直用,不过对于c/c++只能补全一直都没有一个很好的解决方案,虽然有个插件(omnicomplete)功能比较强大,跟eclipse等IDE比起来还是很有差距的,特别是对于类的智能补全。...

fanzc
2012/10/16
0
1
我的vim和emacs配置文件

vimrc: 使用的插件:使用clangcomplete对项目编译附加参数或者自定义的头文件或库目录需要添加到当前文件夹下的.clangcomplete文件中 YouCompleteMe补全C/C++可能需要编译生产libclang.so,...

cnsworder
2014/01/13
0
0
强大的vim配置文件,让编程更随意

花了很长时间整理的,感觉用起来很方便,共享一下。 我的vim配置主要有以下优点: 1.按F5可以直接编译并执行C、C++、java代码以及执行shell脚本,按“F8”可进行C、C++代码的调试 2.自动插入...

我爱吃葱花
2014/08/09
0
0
Vim如何打造成一个真正的IDE?

Vim如何打造成一个真正的IDE?我想实现的功能,就是当用Vim编写完代码的时候,可以在Vim中对C/C++代码进行编译,通过Vim生成exe 我安装了vim ,mingw中的C/C++编译必须文件,请问我要如何实现...

jchtc
2013/10/01
1K
13

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 喝了维他茶,忘了那个她

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @xiaoniezi :#今日歌曲推荐#哈哈哈洗脑《土拨鼠之歌》 《土拨鼠之歌》 手机党少年们想听歌,请使劲儿戳(这里) 周六…… 不是该休息么, 被...

小小编辑
55分钟前
184
5
你需要知道的 5 个 Linux 新手会犯的失误

Linux 爱好者们分享了他们犯下的一些最大错误。 终身学习是明智的 —— 它可以让你的思维敏捷,让你在就业市场上更具竞争力。但是有些技能比其他技能更难学,尤其是那些小菜鸟错误,当你尝试...

xiangyunyan
今天
6
0
来迟了,用Python助你叠猫猫,抢618大红包!

目录: 0 引言 1 环境 2 需求分析 3 前置准备 4 逛店铺流程回顾 5 代码全景展示 6 总结 0 引言 最近叠猫猫的活动可真是十分的火爆,每天小伙伴们为了合猫猫忙的可谓是如火如荼。为啥要叠猫猫...

上海小胖
今天
8
0
FPGA 设备 USB Platform Cable USB

lsusbFuture Technology Devices International, Ltd FT232H Single HS USB-UART/FIFO IC

MtrS
今天
4
0
lua web快速开发指南(6) - Cache、DB介绍

"数据库"与"缓存"的基本概念 数据库与缓存是服务端开发人员的必学知识点. 数据库 "数据库"是一种信息记录、存取的虚拟标记地点的集合统称. 比如现实生活中, 我们经常会用到文件柜、书桌等等数...

水果糖的小铺子
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部