121

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

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

4

8 回答 8

277

从 Xcode 4.4 开始,默认情况下会自动修剪空格,除非该行全是空格。您也可以通过激活Including whitespace-only lines来修复此问题,默认情况下不激活。

Xcode > Preferences > Text Editing > While editing

Xcode 首选项截图

于 2012-08-06T14:15:12.567 回答
25

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

于 2010-04-13T09:37:45.333 回答
24

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

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

然后输入以下脚本:

#!/usr/bin/perl

while (<>) {
    s/\s+$//;
    print "$_\n";
}
于 2009-09-08T06:11:28.213 回答
4

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

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

查找所有尾随空格:

[\t ]+$

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

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

代替:

<nothing>

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

于 2021-03-31T21:01:27.037 回答
3

对于 Xcode 8,我安装了游泳Xcode 插件,用于格式化 Swift 代码,它删除了所有尾随空格和纯空格行。

安装方法

  1. 通过自制桶安装:

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

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

用法

安装后,您可以在 Xcode 中通过Editor -> Swimat -> Format.

于 2017-08-15T13:19:16.580 回答
1

这在 Xcode 3.2 中是不可能的

编辑:

我这么简单地回答了这个问题,因为没有办法正确地做到这一点。

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

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

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

以下是雷达条目的全文:

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

例子:

  1. 预构建脚本
    预构建脚本可用于构建诸如 *.xcconfig 文件或 config.h 头文件之类的先决条件。这对于“运行脚本构建阶段”是不可能的,因为依赖跟踪发生在任何构建阶段被触发之前。

  2. 构建后脚本
    与上面类似,但在构建完成后运行(包括代码签名等)。用于附加包装、有效性检查等。

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

  4. 前/后文件保存脚本。
    在保存之前检查/更改文件。例如运行 cody 美化器

  5. 自定义项目操作。
    我知道组织者定义任意行为的能力。但这是每个用户的功能(不是项目的一部分)。我想定义显示在构建菜单中并且是项目一部分的构建或清理等操作。

于 2009-09-07T19:22:32.950 回答
1

有关 Xcode4,请参见此处:http ://www.wezm.net/technical/2011/08/strip-trailing-whitespace-xcode-4/

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

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

谢谢你,谷歌!

于 2011-11-09T16:32:22.237 回答
0

最好和最简单的方法,无需使用脚本、黑客等。只需转到Find And Replace并按下alt/option + space替换space栏中的按钮,然后单击全部替换。它将用普通空格替换空格,警告/错误将消失!

于 2020-01-01T16:57:16.767 回答