Xcode 修改系统的代码块样式 Code Snippet

简介:

Xcode在编码的时候,系统代码块给我们提供了很大的便利。然而,有时候,也给我们带来很大的困扰。

例如,系统的 if 代码块,大括号是紧跟括号之后的。 
 
但是现在呢,公司的代码规范是要求另起一行。 
这里写图片描述

那每次都得手动去调,的确是件很影响心情的事。

现在,就教大家怎么去修改系统的代码块样式。

Xcode内置代码模板

Xcode的所有代码模板是用一个plist格式xml文件描述的,这文件存储在Xcode的安装目录: 
/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/SystemCodeSnippets.codesnippets

注意:Xcode5.1之前是在这个目录下 
/Applications/Xcode.app/Contents/PlugIns/IDECodeSnippetLibrary.ideplugin/Contents/Resources/? 
SystemCodeSnippets.codesnippets

用任意文本编辑打开这个文件,如下显示: 

这个文件是没有权限去修改的。在这里就是所有的Xcode代码块的配置,包括常见的 if , if else , switch,dispatch等相关代码块。

每一个 key 所对应的意义也很好理解。下面教你如何去理解。在此之前,你应该知道Xcode左下角有个花括号的页签,这里面存储了很多代码提示模板,就是以上所配置的。 
这里写图片描述

如果是自己拖拽进去的会有 User 标志。 
这里写图片描述

自定义代码模块

关于拖拽进代码块的操作这里不作叙述,有不会的可以上网查查或者留言回复我再告之。

自己定义的代码块是在以下目录下: 
~/Library/Developer/Xcode/UserData/CodeSnippets/

注意:只有自己定义过代码块,才会在UserData目录下存在CodeSnippets文件夹,否则是不存在的。

你可以试试写个randomColor(`self.view.backgroundColor = [UIColorcolorWithRed:arc4random()%255/256.0f green:arc4random()%255/256.0f blue:arc4random()%255/256.0f alpha:1.0f])的代码块,拖进去,你会发现在CodeSnippets文件夹下多了这么一个文件。 

这儿的名字是可以更改的,后缀要写成.codesnippet 。

所以我把它更改成如下名字,便于分辨。 

用任意文本编辑器打开,和Xcode左下角对比,很容易明白各个key所对应的意思。 
 

这里要注意的是以下几个 key 。 
IDECodeSnippetIdentifier 是唯一标识符,其中 if 模板的唯一标记是D70E6D11-0297-4BAB-88AA-86D5D5CBBC5D,不能重名,重名即会覆盖。 
这也是我们更改系统代码块样式的核心思想!!!

IDECodeSnippetVersion 是版本号,一般系统的都是1,我们自己定义的写成2。保持默认1也没多大问题,只是Xcode有时会自动用标识符替换你的自定义命名,所以用2是比较合适的。

剩下的很重要的一步,如果是自定义的,一定要加以下这个 key, IDECodeSnippetUserSnippet ,定义为 true 。如果是自定义的而没有这个字段,Xcode是会崩溃的。 

现在用 if 代码块对比一下系统的和自定义的区别。

系统的是

blob.png

自定义的是

blob.png

看到这儿,到底如何去修改系统的代码块样式呢???

1.前往文件夹 
~/Library/Developer/Xcode/UserData/CodeSnippets

2.创建 if.codesnippet 文件

3.复制以下模板:

blob.png

4.找到系统的 if 代码块,粘贴 过来。

5.修改 IDECodeSnippetVersion 从1变成2。

6.增加 IDECodeSnippetUserSnippet 为 true。

7.保存,关闭。退出Xcode ,再打开,输入 if ,看看此时的 if 样式,大功告成!!!!

最后修改的 if 配置文件应是如下:

blob.png

总结

根据 if 的配置逻辑,完全可以再修改 if-else,switch,dispatch_once,dispatch_after等样式。

以下是我修改的一些: 

这个CodeSnippets文件夹是可以复制给他人,别人安装在相同的目录下,便也有了相同的功能。很适合一个团队的代码规整。


目录
相关文章
|
开发者 iOS开发
Xcode运行报错The operation couldn’t be completed. Unable to launch xxx because it has an invalid code...
Xcode运行报错The operation couldn’t be completed. Unable to launch xxx because it has an invalid code...
975 0
|
iOS开发 开发者
iOS开发-新版Xcode在Appdelegate中通过代码控制跳转,不使用系统默认跳转到默认ViewController
iOS开发-新版Xcode在Appdelegate中通过代码控制跳转,不使用系统默认跳转到默认ViewController
276 0
iOS开发-新版Xcode在Appdelegate中通过代码控制跳转,不使用系统默认跳转到默认ViewController
Command /Applications/Xcode.app/Contents/Developer/usr/bin/copypng failed with exit code 1错误解决办法
Command /Applications/Xcode.app/Contents/Developer/usr/bin/copypng failed with exit code 1错误解决办法
140 0
|
程序员 编译器 iOS开发
Xcode创建可复用的代码块
Xcode创建可复用的代码块
144 0
Xcode创建可复用的代码块
|
程序员 编译器 iOS开发
Xcode创建可复用的代码块
在各种程序开发中,编写代码的效率是非常重要的一个问题,各种优秀的编译器也都有相应的插件用于提高程序员的编码速度。在xcode中,可以通过定义代码块的方式将常用的一部分代码进行快捷呼出,首先xcode中为我们定义好了许多代码块
159 0
|
iOS开发
如何清除Xcode8打印的系统日志
Xcode升级成8之后,就会发现控制台打印的日志莫名其妙的变得超级多,最关键的是很多都是没有用的东西,而有些有用的东西却淹没在那无任何卵用的里面,在这我就说一下如何关掉这些没有用的日志。 1.直接快捷键,command + shift +
803 0
|
iOS开发
xcode code snippets (实用)
http://www.cocoachina.com/industry/20130604/6336.html
599 0
|
iOS开发 程序员 编译器