修剪Xcode中的尾随空格

时间:2009-09-07 17:35:54

标签: xcode editor trim developer-tools

当我保存文件时,有没有办法强制Xcode修剪尾随空格?

如果重要,我正在使用3.1.3版本。

8 个答案:

答案 0 :(得分:201)

从Xcode 4.4开始,默认情况下将自动修剪空白,除非该行全部为空白。您也可以激活Including whitespace-only lines来解决此问题,默认情况下不会处于活动状态。

转到Xcode > Preferences > Text Editing > While editing

Xcode preferences screenshot

答案 1 :(得分:24)

您可以创建脚本并将其绑定到键盘快捷键:

  • 选择脚本菜单>编辑用户脚本...
  • 按+按钮并选择新Shell脚本
  • 给它起一个名为“Strip Trailing Spaces”的名称,并给它一个像^⇧R的快捷方式。
  • 将输入设置为“选择”并输出为“替换选择”

然后输入以下脚本:

#!/usr/bin/perl

while (<>) {
    s/\s+$//;
    print "$_\n";
}

答案 2 :(得分:24)

我正在使用Google Toolbox For Mac Xcode Plugin,它添加了“保存时更正的空白”参数,可以在保存时修剪尾随空格。我从emacs中错过了很多。

答案 3 :(得分:3)

对于Xcode 8,我安装了swimat Xcode插件,用于格式化Swift代码,该代码删除了所有尾随空格和仅空白行。

安装方法

  1. 通过homebrew-cask安装:

    brew cask install swimat
    
  2. 直接下载应用程序:
    https://github.com/Jintin/Swimat/releases/download/v1.3.5/Swimat.zip

  3. 克隆extension分支并存档到Mac App。

  4. 用法

    安装完成后,您可以通过Editor -> Swimat -> Format在Xcode中运行Swimat。

答案 4 :(得分:1)

这在Xcode 3.2

中是不可能的

编辑:

我这么简短地回答了这个问题,因为没有办法正确地

当然,由于它是软件,你可以做任何事情:从输入管理器黑客或其他代码注入方式开始到系统范围的键盘拦截,你可以改变你的本地系统随时做任何事情。您可以设置Applescript文件夹操作(arrgh)或使用启动恶魔和FSEvents工具来查看源代码文件。

您还可以向Xcode添加几个脚本(菜单中的用户脚本,目标中的脚本阶段,组织者中的自定义操作,启动脚本甚至是未知的可能性),但所有这些解决方案都存在缺陷,因为它涉及用户机器上的用户或自定义设置。

我不知道一个解决方案,它只是在从SCM签出项目后才能运行。我相信需要这个和类似的自定义脚本,所以我提交了一个错误(雷达7203835,“功能:Xcode工作流程中的更多用户脚本触发器”)。我还没有收到任何反馈意见。

以下是雷达条目的全文:

  

在Xcode中有更多地方运行脚本会很有用。

     

示例:

     
      
  1. 预构建脚本
      预构建脚本可用于构建先决条件,如* .xcconfig文件或config.h头文件。 “运行脚本构建阶段”无法实现这一点,因为依赖关系跟踪会在触发任何构建阶段之前进行。

  2.   
  3. 发布后脚本
      与上面类似,但在构建之后运行   完成(包括代码签名等)。   适用于其他包装,   有效性检查等。

  4.   
  5. 前/后SCM提交脚本。
      检查项目的完整性。

  6.   
  7. 文件保存前/后文件   在保存之前检查/更改文件。例如。运行cody beautifiers

  8.   
  9. 自定义项目操作   我知道组织者能够定义任意动作。但这是每用户功能(不是项目的一部分)。我想定义构建菜单中显示的构建或清理等操作,这些操作是项目的一部分。

  10.   

答案 5 :(得分:1)

在此处查看Xcode4:http://www.wezm.net/technical/2011/08/strip-trailing-whitespace-xcode-4/

酷,Google工具箱for Mac现在为Xcode4添加了“修剪空白”选项。

http://code.google.com/p/google-toolbox-for-mac/downloads/list

谢谢你,Google!

答案 6 :(得分:1)

我发现使用@MartinStolz 建议的新 Automatically trim trailing whitespace -> Including whitespace-only lines 在编辑时效果很好,但有时我需要执行 Cmd + a -> Ctrl + i 并在我不编辑时多次保存文件,并在焦点上保存文件。

如果您想在不使用脚本的情况下清理整个项目(不包括 .md 文件),您也可以执行 Find & Replace -> Regular Expression。由于此技术还删除了文档/评论的尾随空格和制表符,因此您还可以尝试对列入黑名单的字符进行否定前瞻以过滤掉单行评论。

查找所有尾随空格:

[\t ]+$

在不触及单行注释的情况下查找尾随空格:

^(?!.*\\\\)[\t ]+$

替换:

<nothing>

因此 linting 也可以在没有 swiftlint autocorrect 或类似的第三方解决方案的情况下完成。

答案 7 :(得分:0)

最好且简便的方法,而无需使用脚本,黑客等等。 只需查找和替换最好,最简单的方法,而无需使用脚本,黑客等等。 只需转到“查找和替换”,然后按“ alt / option + space”,然后在替换栏中按“ space”按钮,然后单击“全部替换”。 它将用普通空格替换空白,警告/错误将消失!