【问题标题】:Is there a way to disable or modify Xcode's code completion?有没有办法禁用或修改 Xcode 的代码完成?
【发布时间】: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”后通常会做的。

标签: xcode settings customization code-completion


【解决方案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】:

【讨论】:

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

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

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

  1. 选择Text Editing菜单
  2. Code Completion
  3. 取消选中Suggest completion while typing 选项。

【讨论】:

    猜你喜欢
    • 2015-08-20
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    • 2023-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多