来源:iOS_小松哥

链接:http://www.jianshu.com/p/a725e24d7835

为什么要格式化代码

当团队内有多人开发的时候,每个人写的代码格式都有自己的喜好,也可能会忙着写代码而忽略了格式的问题。

在之前,我们可能会写完代码后,再一点一点去调格式,很浪费时间。

有了ClangFormat插件后,就可以一键把代码格式化成统一的样式,不仅节省了时间,也使得代码更规范。我们还可以定制自己喜欢的样式。

安装ClangFormat插件

可以手动安装(下载GitHub项目编译),也可以用Alcatraz(插件管理器)安装,都很简单,具体可以看我的文章《Xcode方便开发的插件推荐》。

装好后是下图这样的,我们可以看到它内置了LLVM、Google、Chromium、Mozilla、WebKit五种样式。

使用方法

通过菜单可以看到,它可以格式化选中的文字们,或者格式化选择的文件们。下面演示下LLVM样式下的格式化:

LLVM样式下的格式化

使用自定义样式

1、需要先把上面菜单里面的File选中,因为我们需要让它用我们自己写的配置文件。

选中File

2、在工程目录下创建配置文件.clang-format文件并编辑。.clang-format文件用的是YAML格式:里面要用的字段在后面会详细解释。

让一段代码不受格式化影响

设置快捷键

首先你可以选中菜单中的 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-true

AlignConsecutiveDeclarations (bool)

如果是true,把连续行的变量名对齐。默认为false。

AlignConsecutiveDeclarations-true

AlignTrailingComments (bool)

如果是true,对齐尾部注释。默认为false。

AlignTrailingComments-true

AllowShortCaseLabelsOnASingleLine (bool)

如果是true, 允许一个case在一行写完,默认为false。

AllowShortCaseLabelsOnASingleLine-true

BreakBeforeBraces (string)

大括号前面是否换行,具体可选值看文档。一般用Allman,代表所有大括号都换行。

BreakBeforeBraces-Allman

ColumnLimit (unsigned)

每行最多多少个字符,0不限制

IndentWidth (unsigned)

缩进宽度,默认为2,但是我们一般设置为4。

IndentWidth-4

IndentCaseLabels (bool)

switch的case缩进宽度,一般用true。默认为false,case会和switch对齐。

KeepEmptyLinesAtTheStartOfBlocks (bool)

是否保留block里面开始的空行们。默认为true。

KeepEmptyLinesAtTheStartOfBlocks-true

MaxEmptyLinesToKeep (unsigned)

最多可以有连续几行空行,默认为1。

MaxEmptyLinesToKeep-1

ObjCBlockIndentWidth

OC的block里面的缩进宽度,默认为4。

ObjCSpaceAfterProperty (bool)

OC里面,是否在@property后加空格。默认为false。

ObjCSpaceBeforeProtocolList-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:总会在(前面加空格。

SpaceBeforeParens-ControlStatements

SpaceInEmptyParentheses (bool)

是否在()里面插入一个空格。默认false。

SpacesBeforeTrailingComments (unsigned)

在尾部//注释前面加几个空格。

SpacesBeforeTrailingComments-3

SpacesInAngles (bool)

是否在后边和>前边插入空格,默认为false。

SpacesInAngles-true

SpacesInContainerLiterals (bool)

@[]里面,是否在 [ 后和 ] 前加空格。默认为true。

SpacesInContainerLiterals-true

SpacesInParentheses (bool)

是否在(后面和)前面加空格,默认为false。

SpacesInParentheses-true

当项目里面有多种语言时,我们可以分别设置样式:

---

# 我们默认用 LLVM 样式, 缩进宽度为4。

BasedOnStyle: LLVM

IndentWidth: 4

---

Language: Cpp

# C++ 设置星号左对齐。

PointerAlignment: Left

---

Language: JavaScript

# JavaScript 每行字符限制设置为100。

ColumnLimit: 100

---

Language: Proto

# 不格式化Proto文件。

DisableFormat: true

...

这个是我在用的.clang-format文件。大家可以下载下来自己修改一下再用。

Xcode代码格式化教程,可自定义样式的更多相关文章

  1. 超详细的Xcode代码格式化教程,可自定义样式。

    超详细的Xcode代码格式化教程,可自定义样式. 为什么要格式化代码 当团队内有多人开发的时候,每个人写的代码格式都有自己的喜好,也可能会忙着写代码而忽略了格式的问题.在之前,我们可能会写完代码后,再 ...

  2. 超详细的Xcode代码格式化教程,可自定义样式

    为什么要格式化代码 当团队内有多人开发的时候,每个人写的代码格式都有自己的喜好,也可能会忙着写代码而忽略了格式的问题. 在之前,我们可能会写完代码后,再一点一点去调格式,很浪费时间. 有了ClangF ...

  3. iOS开发-xCode代码格式化xAlign

    xCode默认是可以进行代码格式化的,能满足基础开发需求,如果想要个性一些代码对齐方式宏对齐,等号对齐,属性对齐,xAlign就提供了以上三种功能,参考文中效果~ 基础效果 等号对齐: 属性对齐: 宏 ...

  4. [转]Xcode的快捷键及代码格式化

    Xcode比较常用的快捷键,特别是红色标注的,很常用.1. 文件CMD + N: 新文件CMD + SHIFT + N: 新项目CMD + O: 打开CMD + S: 保存CMD+OPt+S:保存所有 ...

  5. Xcode的快捷键及代码格式化

    1. 文件CMD + N: 新文件 CMD + SHIFT + N: 新项目CMD + O: 打开 CMD + S: 保存 CMD+OPt+S:保存所有文件 CMD + SHIFT + S: 另存为 ...

  6. Prettier-Code Formater代码格式化插件使用教程

    目录 Prettier-Code Formater代码格式化插件使用教程 插件的安装 插件的使用 方式一: 配置VScode代码格式化后, 结合VScode快捷键使用 方式二: CLI中使用命令行的方 ...

  7. ModernUI教程:如何从MUI样式中派生自定义样式

    下面的步骤用来说明怎么样去创建一个基于MUI的自定义样式.让我们创建一个字体颜色显示为红色的按钮样式. 可视化显示如下: 因为我们并没有明确生命继承自MUI风格,它还是采用WPF的默认风格.我们需要设 ...

  8. Xcode 快捷键及代码格式化

    按住apple键点击类名就可以定位到这个类中查看相关定义(在日后的开发中我们会经常这么来做,毕竟要记住iOS开发中所有的API是不现实的,有些API我们可以通过这种方法来查找) PS:下面都是网上百度 ...

  9. ActionBar官方教程(11)自定义ActionBar的样式(含重要的样式属性表及练习示例)

    Styling the Action Bar If you want to implement a visual design that represents your app's brand, th ...

随机推荐

  1. SharePoint咨询师之路:设计之前的那些事三:体系结构

    提示:本系列只是一个学习笔记系列,大部分内容都可以从微软官方网站找到,本人只是按照自己的学习路径来学习和呈现这些知识.有些内容是自己的经验和积累,如果有不当之处,请指正. 咨询师更多的时候是解决方案提 ...

  2. [原创]Devexpress XtraReports 系列 5 创建交叉报表

    昨天我们已经介绍了如何创建多栏报表,详见:[原创]Devexpress XtraReports 系列 4 创建多栏报表 今天我们继续我们的XtraReports系列.Demo和数据库文件最后会附上. ...

  3. 《Pandoc用户指南》之一

    @(编程) 1. 描述 Pandoc是一个用于从一种标记格式转换为另一种的Haskell库,还是一个使用该库的命令行工具.它可以读取markdown格式和Textile格式(的子集).reStruct ...

  4. 要后台控制前台的的CSS样式,我们可以加入ASP.NET Literal 控件

    ASP.NET Literal 控件,用于在页面上显示文本.此文本是可编程的. 我用它来制作了 ) { this.LtdMemberPromotion7.Text = "<style ...

  5. commondline 之三 执行jar文件

    java [-options] -jar jarfile [args...] 点击查看获取可执行jar文件方法

  6. How Tomcat Works(十四)补充

    在How Tomcat Works(十四)中,本人并没有对javax.servlet.Filter及javax.servlet.FilterChain做详细的描述,本文在这里做一下补充 FilterC ...

  7. mysql中间件研究(Atlas,cobar,TDDL)

    mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡,读写分离,failover等,但其不支持大数据量的分库分表且性能较差.下面介绍几款能代替其的mysql开源中间件产品,Atlas ...

  8. Spring MVC体系结构

    [Spring MVC类图]<Spring实战>中:<Spring3.0就这么简单>中:[http://blog.csdn.net/gstormspire/article/de ...

  9. C#以及Oracle中的上取整、下取整方法

    1.C#中: 上取整——Math.Ceiling(Double),即返回大于或等于指定双精度浮点数的最大整数(也可称为取天板值): eg:  Math.Ceiling(1.01)=2;      Ma ...

  10. 一个简单的Java程序例子以及其几种注释

    在说道主题前,先来啰嗦两句,o()︿︶)o 唉,不说两句心里就有个疙瘩,也许这就是所谓的强迫症吧,好了说说我想啰嗦的,其实也就是这样子的,关于Java开发工具箱的下载以及环境的配置.Java开发工具箱 ...