超详细的Xcode代码格式化教程,可自定义样式。
超详细的Xcode代码格式化教程,可自定义样式。
当团队内有多人开发的时候,每个人写的代码格式都有自己的喜好,也可能会忙着写代码而忽略了格式的问题。
在之前,我们可能会写完代码后,再一点一点去调格式,很浪费时间。
有了ClangFormat
插件后,就可以一键把代码格式化成统一的样式,不仅节省了时间,也使得代码更规范。我们还可以定制自己喜欢的样式。
安装ClangFormat插件
可以手动安装(下载GitHub项目编译),也可以用Alcatraz(插件管理器)安装,都很简单,具体可以看我的文章《Xcode方便开发的插件推荐》。
装好后是下图这样的,我们可以看到它内置了LLVM
、Google
、Chromium
、Mozilla
、WebKit
五种样式。
使用方法
通过菜单可以看到,它可以格式化选中的文字们,或者格式化选择的文件们。下面演示下LLVM
样式下的格式化:
使用自定义样式
1、需要先把上面菜单里面的File选中,因为我们需要让它用我们自己写的配置文件。
2、在工程目录下创建配置文件.clang-format
文件并编辑。.clang-format
文件用的是YAML
格式:里面要用的字段在后面会详细解释。
key1: value1
# 一个注释
key2: value2
当然如果你已经有.clang-format
文件的话,直接拖动到项目根目录也可以。
文章结尾有我在用的.clang-format
文件。
温馨提示:.clang-format
文件是隐藏文件,默认是看不见的。需要在终端输入以下命令:
//显示 隐藏文件
defaults write com.apple.finder AppleShowAllFiles -bool true
killall Finder
//隐藏 隐藏文件
defaults write com.apple.finder AppleShowAllFiles -bool false
killall Finder
全局配置
上面我们是在项目根目录创建的.clang-format
文件,每次建新项目都要有。如果你想让所有的项目公用一个文件,把.clang-format
文件放在所有项目都在的一个最大根目录下就可以了。
让一段代码不受格式化影响
如果想让一段代码不受格式化影响,需要将他们包含在// clang-format off
和 // clang-format on
这两句注释之间,这样这段代码就不会被格式化,但是这两句注释本身是会被格式化的。
设置快捷键
首先你可以选中菜单中的 Enable Format On Sava
,把它点Disable Format On Sava
,这样以后每次按⌘+S
保存文件时就可以自动格式化了。
我们也可以给一些菜单设置快捷键,使用的时候不用每次去选择各级菜单了。比如我们给Format Selected Text
设置快捷键:
你也可以为其他菜单设置快捷键,其实呢,我用Format Selected Text
的时候很少,每次都是想格式化的时候直接⌘+S
就行了哈哈哈。
配置文件中属性的含义讲解
下面说一些配置文件的常用的参数介绍,其他的可以看官方文档:Clang-Format Style Options,其中小括号内代表他需的是什么类型的值。
BasedOnStyle (string)
基于哪种样式。除了文件中写出的定制属性外,别的没定制的属性都默认用这种样式的。
可选值有五种:LLVM
:一种遵循LLVM coding standards的样式。Google
:一种遵循Google’s C++ style guide的样式。Chromium
:一种遵循Chromium’s style guide的样式。Mozilla
:一种遵循Mozilla’s style guide的样式。WebKit
:一种遵循WebKit’s style guide的样式。
AccessModifierOffset (int)
访问修饰词 (比如public) 前面额外需要加的缩进长度。默认为0。
AlignConsecutiveAssignments (bool)
如果是true,把连续的赋值操作按=对齐,默认为false。
AlignConsecutiveDeclarations (bool)
如果是true,把连续行的变量名对齐。默认为false。
AlignTrailingComments (bool)
如果是true,对齐尾部注释。默认为false。
AllowShortCaseLabelsOnASingleLine (bool)
如果是true, 允许一个case在一行写完,默认为false。
BreakBeforeBraces (string)
大括号前面是否换行,具体可选值看文档。一般用Allman,代表所有大括号都换行。
ColumnLimit (unsigned)
每行最多多少个字符,0不限制
IndentWidth (unsigned)
缩进宽度,默认为2,但是我们一般设置为4。
IndentCaseLabels (bool)
switch的case缩进宽度,一般用true。默认为false,case会和switch对齐。
KeepEmptyLinesAtTheStartOfBlocks (bool)
是否保留block里面开始的空行们。默认为true。
MaxEmptyLinesToKeep (unsigned)
最多可以有连续几行空行,默认为1。
ObjCBlockIndentWidth
OC的block里面的缩进宽度,默认为4。
ObjCSpaceAfterProperty (bool)
OC里面,是否在@property后加空格。默认为false。
ObjCSpaceBeforeProtocolList (bool)
OC里面,是否在Protocol名字列表前面加空格,默认为true。
PointerAlignment (string)
指针的位置。默认为Right。
可选值:
Left:NSString* name
Middle:NSString * name
Right:NSString *name
SpaceBeforeAssignmentOperators (bool)=
前面是否有空格。默认为true。
SpaceBeforeParens (string)
是否在(
前面加空格。默认ControlStatements。
可选值:
Never: 从来不在(
前面加空格。
ControlStatements:在控制语句(for/if/while...)的(
前面加空格。
Always:总会在(
前面加空格。
SpaceInEmptyParentheses (bool)
是否在()
里面插入一个空格。默认false。
SpacesBeforeTrailingComments (unsigned)
在尾部//注释前面加几个空格。
SpacesInAngles (bool)
是否在<
后边和>
前边插入空格,默认为false。
SpacesInContainerLiterals (bool)@[]
里面,是否在 [
后和 ]
前加空格。默认为true。
SpacesInParentheses (bool)
是否在(
后面和)
前面加空格,默认为false。
当项目里面有多种语言时,我们可以分别设置样式:
---
# 我们默认用 LLVM 样式, 缩进宽度为4。
BasedOnStyle: LLVM
IndentWidth: 4
---
Language: Cpp
# C++ 设置星号左对齐。
PointerAlignment: Left
---
Language: JavaScript
# JavaScript 每行字符限制设置为100。
ColumnLimit: 100
---
Language: Proto
# 不格式化Proto文件。
DisableFormat: true
...
这个是我在用的.clang-format文件。大家可以下载下来自己修改一下再用。
欢迎关注 我 和我的专题:iOS技术交流,查看更多好文章。
欢迎加入iOS技术交流群:244122891,这里有很多爱学习爱交流的人。
原文链接:http://www.jianshu.com/p/a725e24d7835
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
超详细的Xcode代码格式化教程,可自定义样式。的更多相关文章
- 超详细的Xcode代码格式化教程,可自定义样式
为什么要格式化代码 当团队内有多人开发的时候,每个人写的代码格式都有自己的喜好,也可能会忙着写代码而忽略了格式的问题. 在之前,我们可能会写完代码后,再一点一点去调格式,很浪费时间. 有了ClangF ...
- Xcode代码格式化教程,可自定义样式
来源:iOS_小松哥 链接:http://www.jianshu.com/p/a725e24d7835 为什么要格式化代码 当团队内有多人开发的时候,每个人写的代码格式都有自己的喜好,也可能会忙着写代 ...
- 超详细!Github团队协作教程(Gitkraken版)
超详细!Github团队协作教程(Gitkraken版) 一.前期工作 1. 在 Github 上创建 organization step1. 登录Github网站,点击右上角头像,选择 " ...
- iOS开发-xCode代码格式化xAlign
xCode默认是可以进行代码格式化的,能满足基础开发需求,如果想要个性一些代码对齐方式宏对齐,等号对齐,属性对齐,xAlign就提供了以上三种功能,参考文中效果~ 基础效果 等号对齐: 属性对齐: 宏 ...
- hadoop入门篇---超详细hadoop服务器环境配置教程
虚拟机以及Linux系统安装在之前的两篇分享中已经详细的介绍了方法,并且每一步的都配图了.如果有朋友还是看不懂,那我也爱莫能助了.本篇主要就hadoop服务器操作系统配置进行详细说明,hadoop安装 ...
- 【智能算法】粒子群算法(Particle Swarm Optimization)超详细解析+入门代码实例讲解
喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 01 算法起源 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由E ...
- 超详细的FreeRTOS移植全教程——基于srm32
### 准备 在移植之前,我们首先要获取到FreeRTOS的官方的源码包.这里我们提供两个下载链接: > 一个是官网:http://www.freertos.org/ > 另外一个是代码托 ...
- 微信支付接口--超详细带注释代码--Demo
如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人.谢谢大家!❤ 如果解决不了,可以在文末进群交流. 如果对你有帮助的话麻烦点个[推荐]~最好还可以follow一下我的GitHub~感谢观看! 微 ...
- 超详细的RNN代码实现(tensorflow)
一.学习单步的RNN:RNNCell 如果要学习TensorFlow中的RNN,第一站应该就是去了解“RNNCell”,它是TensorFlow中实现RNN的基本单元,每个RNNCell都有一个cal ...
随机推荐
- NoSql存储日志数据之Spring+Logback+Hbase深度集成
NoSql存储日志数据之Spring+Logback+Hbase深度集成 关键词:nosql, spring logback, logback hbase appender 技术框架:spring-d ...
- Python语言精要---上
下面的记录根据: 麦金尼. 利用Python进行数据分析[M]. 机械工业出版社, 2014. 这本教材的附录部分总结而来 Python的设计特点是重视可读性,简洁性以及明确性 Python不推荐 ...
- 《Linux内核设计的艺术》学习笔记(二)INT 0x13中断
参考资料: 1. <IBM-PC汇编语言程序设计> 2. http://blog.sina.com.cn/s/blog_5028978101008wk2.html 3. http://ww ...
- SQL查询语句 group by后, 字符串合并
合并列值 --******************************************************************************************* 表 ...
- Maven生命周期(插件)
maven拥有三套相互独立的生命周期,它们分别是clean,default和site.clean生命周期的目的是清理项目,default生命周期的目的是构建项目,而site 生命周期的目的是建立项目站 ...
- iOS - AFNetworking 网络请求
前言 在 iOS 开发中,一般情况下,简单的向某个 Web 站点简单的页面提交请求并获取服务器的响应,用 Xcode 自带的 NSURLConnection 是能胜任的.但是,在绝大部分下我们所需要访 ...
- Spring JDBC主从数据库配置
通过昨天学习的自定义配置注释的知识,探索了解一下web主从数据库的配置: 背景:主从数据库:主要是数据上的读写分离: 数据库的读写分离的好处? 1. 将读操作和写操作分离到不同的数据库上,避免主服务器 ...
- Python 命令行参数和getopt模块详解
有时候我们需要写一些脚本处理一些任务,这时候往往需要提供一些命令行参数,根据不同参数进行不同的处理,在Python里,命令行的参数和C语言很类似(因为标准Python是用C语言实现的).在C语言里,m ...
- golang type 和断言 interface{}转换
摘要 类型转换在程序设计中都是不可避免的问题.当然有一些语言将这个过程给模糊了,大多数时候开发者并不需要去关 注这方面的问题.但是golang中的类型匹配是很严格的,不同的类型之间通常需要手动转换,编 ...
- 多路径(multi-path)安装测试实例
1.确保安装以下的包: device-mapper device-mapper-multipath [root@nticket1~]# rpm -qa "*device*" dev ...