在 Xcode 中修剪尾随空格
Posted
技术标签:
【中文标题】在 Xcode 中修剪尾随空格【英文标题】:Trim trailing spaces in Xcode 【发布时间】:2010-11-26 07:04:46 【问题描述】:当我保存文件时,有没有办法强制 Xcode 修剪尾随空格?
如果重要的话,我使用的是 3.1.3 版。
【问题讨论】:
【参考方案1】:从 Xcode 4.4 开始,默认情况下会自动修剪空格,除非该行全是空格。你也可以激活Including whitespace-only lines
来解决这个问题,默认是不激活的。
转到Xcode > Preferences > Text Editing > While editing
【讨论】:
此设置仅在光标离开该行后修剪该行的尾随空格。因此,如果光标在保存时位于该行上,它仍然允许您保存带有一行尾随空格的文件。 为什么这不是默认设置?如果您有一个带有尾随空格的现有文件,只需标记所有、剪切、保存、粘贴、保存。 这需要覆盖这个答案的hacky脚本解决方案。 在所有现有文件上使用这个 +ctrl-i
可以处理尾随空格【参考方案2】:
我发现使用@MartinStolz 建议的新Automatically trim trailing whitespace -> Including whitespace-only lines
在编辑时效果很好,但我有时需要执行 Cmd + a -> Ctrl + i 并在我不编辑时多次保存文件,文件处于焦点位置。
如果您想在不使用脚本的情况下清理整个项目(不包括.md
文件),您也可以使用Find & Replace -> Regular Expression
。由于这种技术也删除了文档/cmets 的尾随空格和制表符,因此您还可以尝试对列入黑名单的字符进行负前瞻以过滤掉单行 cmets。
查找所有尾随空格:
[\t ]+$
在不接触单行 cmets 的情况下查找尾随空格:
^(?!.*\\\\)[\t ]+$
替换:
<nothing>
因此,无需 swiftlint autocorrect
或类似的第三方解决方案也可以进行 linting。
【讨论】:
【参考方案3】:最好和最简单的方法,无需使用脚本、黑客等。
只需转到Find And Replace
并按alt/option + space
并按替换栏中的space
按钮,然后单击全部替换。
它将用普通空格替换空格,警告/错误将消失!
【讨论】:
这是否只删除问题中要求的尾随个空格? 正确的想法@H2zee,只需要改用正则表达式(查看我上面的答案)。 @Blastfurnace 这取决于你,无论你想改变什么,你都可以。如果您有任何问题,请告诉我【参考方案4】:对于 Xcode 8,我安装了 swimat Xcode 插件,用于格式化 Swift 代码,它删除了所有尾随空格和纯空格行。
安装方法
通过自制桶安装:
brew cask install swimat
直接下载应用:https://github.com/Jintin/Swimat/releases/download/v1.3.5/Swimat.zip
克隆 extension
分支并存档到 Mac App。
用法
安装后,您可以通过Editor -> Swimat -> Format
在 Xcode 中运行 Swimat。
【讨论】:
这个工具不会删除空行。 @Sabrina 这个答案是关于删除尾随空格,而不是空行。【参考方案5】:在此处查看 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
谢谢你,谷歌!
【讨论】:
【参考方案6】:我正在使用Google Toolbox For Mac Xcode Plugin,它添加了一个“保存时正确空格”参数,用于在保存时修剪尾随空格。我很怀念emacs。
【讨论】:
我也在使用这个插件。言行一致。 会很完美,不幸的是它目前不适用于 Xcode 4 :( 我们现在有了一些基本的 Xcode 4 支持。请参阅我们的new plugin 在哪里可以找到“保存时正确的空白”参数? 我终于设法让 GTM 在 Xcode 4.3.2 上运行,但来自 GTM wiki 的安装说明似乎无效。我没有将 .xcplugin 放入~/Library/Application Support/Developer/Shared/Xcode/Plug-ins
(按照 Google 的说明),而是将其放入 /Applications/Xcode.app/Contents/PlugIns
并重新启动 Xcode。【参考方案7】:
这在 Xcode 3.2 中是不可能的
编辑:
我回答这个问题很简短,因为没有办法正确地做到这一点。
当然,由于它是软件,您可以做任何事情:从 Input Manager hack 或其他代码注入方式到系统范围的键盘拦截,您可以随时更改本地系统来做任何事情。您可以设置 Applescript 文件夹操作 (arrgh) 或使用启动恶魔和 FSEvents 工具来查看您的源代码文件。
您还可以向 Xcode 添加几个脚本(菜单中的用户脚本,目标中的脚本阶段,管理器中的自定义操作,甚至还有一个非常未知的启动脚本),但是所有这些解决方案都有缺陷,因为它涉及用户或用户机器上的自定义设置。
我不知道在从 SCM 签出项目后简单有效的解决方案。我相信需要这个和类似的自定义脚本,所以我提交了一个错误(雷达 7203835,“功能:Xcode 工作流程中的更多用户脚本触发器”)。我还没有收到任何反馈。
这是雷达条目的全文:
在 Xcode 中拥有更多运行脚本的地方会很有用。
例子:
预构建脚本 预构建脚本可用于构建先决条件,如 *.xcconfig 文件或 config.h 标头。这对于“运行脚本构建阶段”是不可能的,因为依赖项跟踪发生在任何构建阶段被触发之前。
后期构建脚本 与上面类似,但在构建之后运行 完成(包括代码签名等)。 用于附加包装, 有效性检查等
SCM 提交前/后提交脚本。 检查项目完整性。
前/后文件保存脚本。 在保存之前检查/更改文件。例如。运行 cody 美化器
自定义项目操作。 我知道组织者定义任意行为的能力。但这是每个用户的功能(不是项目的一部分)。我想定义显示在构建菜单中并且是项目一部分的构建或清理等操作。
【讨论】:
编辑回答为什么在这种情况下变通办法不令人满意 谢谢。虽然我赞成以正确的方式做这件事,但我会接受任何不太侵入性的黑客攻击。那些多余的空格真的很烦人。【参考方案8】:您可以创建脚本并将其绑定到键盘快捷键:
选择 脚本菜单 > 编辑用户脚本... 按 + 按钮并选择 新建 Shell 脚本 给它起一个像“Strip Trailing Spaces”这样的名字,给它一个像⌃⇧R这样的快捷方式。 将输入设置为“选择”,将输出设置为“替换选择”然后输入以下脚本:
#!/usr/bin/perl
while (<>)
s/\s+$//;
print "$_\n";
【讨论】:
啊,是的,很简单...谢谢。有没有办法将此与文件保存相关联? 要处理整个文件(这可能是您想要做的),请将输入设置为“整个文档”并将输出设置为“替换文档内容”。但是,这会将光标留在文件底部。 这个答案在 Xcode 4.4 中已经过时了。请参阅 Martin Stolz 的答案。以上是关于在 Xcode 中修剪尾随空格的主要内容,如果未能解决你的问题,请参考以下文章