有没有办法禁用或修改 Xcode 的代码完成?

Posted

技术标签:

【中文标题】有没有办法禁用或修改 Xcode 的代码完成?【英文标题】:Is there a way to disable or modify Xcode's code completion? 【发布时间】:2011-01-14 04:37:24 【问题描述】:

我在 Xcode Code Sense 首选项中取消了“在弹出列表中显示参数”和“为完成插入参数占位符”的选中,但是当我在编辑器中输入“else”(例如)时,Xcode 仍然转储到预先格式化的“else”块。

有没有办法完全禁用此功能,或者(更好)修改 Xcode 插入的块?默认的 Xcode “else” 块与我的编码风格不匹配,因此占位符实际上阻碍了我的工作效率而不是帮助。

更新:我刚刚找到this question,它描述了如何更改用于代码完成的默认缩进和空格,以便回答我问题的后半部分。

更新 #2: 将“自动建议”设置为“从不”,因为 suggested by outis 有效地完全禁用了代码完成。我想我正在寻找的是一种禁用特定代码完成的方法,(如“else”块)同时保留变量和方法名称的所有通常完成。

【问题讨论】:

您使用的是哪个版本的 XCode?​​span> XCode 是插入块还是仅仅建议它? 我不得不说“建议”,因为它显示为灰色,如果我使用箭头键会消失。麻烦的是,如果我按回车,它实际上会被插入,这是我在输入“else”后通常会做的。 【参考方案1】:

“文本编辑”和“缩进”首选项部分可能具有您需要的设置。

您可以将“自动建议”设置为“从不”。

【讨论】:

一个合理的猜测,但我在那些面板中没有发现任何会影响代码完成的东西。 将“自动建议”设置为“从不”摆脱了所有代码完成,包括变量和方法以及我经常使用的所有好东西@987654321 @ 如何将其设置为“延迟”?您也可以使用 F5、alt-esc 或“^”来获取完成列表。 我很欣赏这个建议。我已经变得如此依赖于变量和方法名称的即时自动完成,即使是短暂的延迟或另一次击键也会让我发疯。我只是输入了类似 NSDi 的内容,甚至没有考虑它。我知道我在这里很挑剔。我问这个问题的目的是挤出最后 2% 的额外生产力,这可以通过微调获得。 我同意你不要拖延。我只是建议它,因为它比切换到 1TBS 对你来说不会那么令人反感。幸运的是,看起来另一个问题已经有了完整的解决方案。【参考方案2】:

您可以覆盖任何现有的代码完成,从以下位置复制任何 .xtcmacro 文件:

/Applications/Xcode.app/Contents/PlugIns/TextMacros.xctxtmacro

(除非您使用的是终端,否则您必须右键单击 Xcode.app 并说“显示包内容”才能继续沿着目录链向下移动)

进入本地目录:

~/Library/Application Support/Developer/Shared/Xcode/Specifications

(您可能必须创建 Specifications 目录)。然后简单地检查其中的所有定义,为了消除烦人的完成,您可以为任何条目取出 CompletionPrefix,或编辑要插入的代码以按照您的喜好工作。

顺便说一句,您可以将任何名为 .xctxtmacro 的文件放在该规范目录中,它将被读入,允许您定义一些非常有用的自定义宏。

【讨论】:

这看起来很有希望。当我以后升级 Xcode 时,Xcode.app/contents 中的原始 .xctxtmacro 文件会重新出现吗? 是的,事实上你不应该将它们移出 XCode,只需将它们复制到规范中,因为你所做的任何更改都会覆盖它们......当你升级 XCode 时,你将覆盖所有这些设置,但它们不会经常更改。最好覆盖困扰您的特定条目而不覆盖其他任何内容(从规范中的文件中删除)。 插件目录在 xcode 4.5.2 中对我来说不存在。搬家了吗? 我刚刚修复了路径,XCode 不再在 Developer 中...但插件应该还在。 并且该目录中的所有内容都有扩展名.ideplugin【参考方案3】:

这里的信息有帮助吗?

http://cocoawithlove.com/2008/06/hidden-xcode-build-debug-and-template.html

【讨论】:

看起来那篇文章提出了与 Kendall Helmstetter Gelner 在他的回答中所做的相同的建议(除非我遗漏了一些额外的东西)。不过,它一篇好文章,所以感谢您发布它。 +1 从文章中,我将它用于我的设置(在 Terminal.app 中):默认写入 com.apple.Xcode XCCodeSenseFormattingOptions ' "PreExpressionsSpacing" = "" ; "块分隔符" = "\n" ; '【参考方案4】:

您可以使用以下步骤在 Xcode 中启用/禁用代码完成

    点击左上角Xcode菜单 选择Preferences...(出现首选项弹出窗口)

    选择Text Editing菜单 见Code Completion。 取消选中Suggest completion while typing 选项。

【讨论】:

以上是关于有没有办法禁用或修改 Xcode 的代码完成?的主要内容,如果未能解决你的问题,请参考以下文章

Xcode rename failed(修改类名失败)的解决办法

有没有办法在测试中选择性地禁用对实体修改的审计?

有没有办法让xcode调试窗口能显示中文字符串

XCode6上设备或证书不能自动创建和修改的问题解决

Xcode 6 为布局边距设置默认值或禁用它们

禁用密码修改表单的自动完成