去掉Xcode源码末尾的空格

在用 Xcode 开发的时候,很容易就在行末增加一些空格了。这些空格在上传到 review board 上后 , 就会被特别的颜色显示出来。因为一种好的编程风格是说 , 不应该在行末增加不必要的空格。如果是用 eclipse 写 java, 那么这种时候选中写好的代码,按 ctrl+shift+F 即可调整源码的风格 , 将尾部的空格去掉。可惜在 Xcode 中并没有提供相应的功能。

不过我们可以用命令行来达到这一效果 , 在工程目录下输入:

find . -name "*.[hm]" | xargs sed -Ee 's/ +$//g' -i ""

这样 , 就可以把源码中行末多出来的空格去掉了 , 是不是很爽 ? 可以把这句加到执行 post-review 的脚本上,这样就可以做到自动去空格了。

顺便说一下,我打算把这些小脚本工具总结出来,放到 github 上,地址是 https://github.com/tangqiaoboy/xcode_tool,感兴趣的同学可以把它 clone 下来。

祝玩得开心~

2013 年 6 月 22 日更新

上文写于 2011 年末,在 2012 年在 WWDC 大会上,苹果推出了 Xcode4。从 Xcode4 开始,Xcode 会自动去掉源码末尾的空格。所以上面提到的脚本基本没用了。不过对于工程中的 html 或 js 文件,Xcode 的去末尾空格功能并没有打开,所以在某些时候才能有一些小用处。

另外,每次记得敲命令来去掉空格是一件很恶心的事情,最好是由程序自动完成。考虑到现在 git 已经很普及了,在这里介绍另一种在 git 仓库中创建钩子 (hook) 的方法来去掉所有提交文件的末尾空格,具体做法如下:

在工程目录的 .git/hooks/ 目录下,创建一个名为 pre-commit 的文件,输入如下内容

#!/bin/sh
if git-rev-parse --verify HEAD >/dev/null 2>&1 ; then
against=HEAD
else
# Initial commit: diff against an empty tree object
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
fi
# Find files with trailing whitespace
for FILE in `exec git diff-index --check --cached $against -- | sed '/^[+-]/d' | sed -E 's/:[0-9]+:.*//' | uniq` ; do
# Fix them!
sed -i '' -E 's/[[:space:]]*$//' "$FILE"
git add "$FILE"
done

然后用 chmod +x pre-commit 给该文件加上执行权限。这样,每次在 git 提交文件的时候,该脚本就会被自动执行并且将提交文件末尾的空格去掉。

去掉Xcode源码末尾的空格的更多相关文章

  1. SpringMVC源码剖析(一)- 从抽象和接口说起

    SpringMVC作为Struts2之后异军突起的一个表现层框架,正越来越流行,相信javaee的开发者们就算没使用过SpringMVC,也应该对其略有耳闻.我试图通过对SpringMVC的设计思想和 ...

  2. RxJava系列6(从微观角度解读RxJava源码)

    RxJava系列1(简介) RxJava系列2(基本概念及使用介绍) RxJava系列3(转换操作符) RxJava系列4(过滤操作符) RxJava系列5(组合操作符) RxJava系列6(从微观角 ...

  3. SpringMVC源码分析2:SpringMVC设计理念与DispatcherServlet

    转自:https://my.oschina.net/lichhao/blog SpringMVC简介 SpringMVC作为Struts2之后异军突起的一个表现层框架,正越来越流行,相信javaee的 ...

  4. SSM 三大框架系列:Spring 5 + Spring MVC 5 + MyBatis 3.5 整合(附源码)

    之前整理了一下新版本的 SSM 三大框架,这篇文章是关于它的整合过程和项目源码,版本号分别为:Spring 5.2.2.RELEASE.SpringMVC 5.2.2.RELEASE.MyBatis ...

  5. HRPlugin For Xcode发布(附源码地址)

    今天给大家介绍的这个插件,是我在IOS平台上开发以来,一些想法的集合体.因为本人时常感觉在开发过程中无论从GOOGLE资料查找和SQL数据库查询,正则表达式测试,SVN等,这些经常要做的操作中,耽误了 ...

  6. 在Xcode中使用Git进行源码版本控制

    http://www.cocoachina.com/ios/20140524/8536.html 资讯 论坛 代码 工具 招聘 CVP 外快 博客new 登录| 注册   iOS开发 Swift Ap ...

  7. 【转】在Xcode中使用Git进行源码版本控制 -- 不错

    原文网址:http://www.cocoachina.com/ios/20140524/8536.html 本文翻译自Understanding Git Source Control in Xcode ...

  8. Windows 以及 Xcode下编译调试 libcurl 源码

    curl 这个工具大家都很熟悉. 前几天因为要跟踪curl的实现细节, 不得不设法搭建curl的调试工程. 我们分别在windows visual studio 和 mac 上的 xcode 下搭建调 ...

  9. [Xcode 实际操作]八、网络与多线程-(9)使用异步Get方式获取网页源码

    目录:[Swift]Xcode实际操作 本文将演示如何通过Get请求方式,异步获取网页源码. 异步请求与同步请求相比,不会阻塞程序的主线程,而会建立一个新的线程. 在项目导航区,打开视图控制器的代码文 ...

随机推荐

  1. 【OpenStack】OpenStack系列5之Cinder详解

    源码下载安装 git clone -b stable/icehouse https://github.com/openstack/cinder.git pip install -r requireme ...

  2. UEditor去除复制样式实现无格式粘贴

    UEditor内置了无格式粘贴的功能,只需要简单的配置即可. 1.修改ueditor.config.js,开启retainOnlyLabelPasted,并设置为true 2.开启pasteplain ...

  3. bat批量去除文件首行和合并到文件

    bat批量去除文件首行 set n=1 :starline for %%j in (*.txt) do ( :3 if exist D:\work\test\new_%n%.txt (set /a n ...

  4. Java for LeetCode 027 Remove Element

    Given an array and a value, remove all instances of that value in place and return the new length. T ...

  5. codeforces B.Fence 解题报告

    题目链接:http://codeforces.com/problemset/problem/363/B 题目意思:给定整数n和k,需要从n个数中找出连续的k个数之和最小,输出这连续的k个数中的第一个数 ...

  6. JavaEE面试题库

    Java EE软件工程师 认证考试 面试题大全 目  录 第一部分  HTML/CSS/JavaScript 1 1.              HTML含义和版本变化... 1 2.         ...

  7. zsh(yum装包的时候,有时候会不行)

    [root@GIT ~]# yum search zsh =============================== N/S Matched: zsh ====================== ...

  8. Java Hour 39 Maven ( 1 )

    有句名言,叫做10000小时成为某一个领域的专家.姑且不辩论这句话是否正确,让我们到达10000小时的时候再回头来看吧. Hour 39 Maven 1 Perhaps you are running ...

  9. Sql server之路 (一)基础学习

    查询 1.Select * from表名 2.Select 字段1,字段2,from表名 3.Select 字段1,字段2,...from表名 where 字段1 in('内容') 插入 1.inse ...

  10. google地图引入网页

    <script src=);//指定坐标,缩放级别,setcenter 设置地图中心位置             //var mapControl = new GMapTypeControl() ...