【问题标题】:How to get smart tabs ("indent with tabs, align with spaces") behavior in Xcode?如何在 Xcode 中获得智能制表符(“使用制表符缩进,与空格对齐”)行为?
【发布时间】:2013-04-18 22:52:19
【问题描述】:

我曾经使用制表符进行缩进,使用空格进行对齐。 像这样(箭头显示制表符,点显示空格)。

在 QtCreator 中,您可以在标准首选项中设置此类编码样式。 我找不到在 Xcode 中实现相同目标的方法。你能告诉我这是否可能吗? 可能有一个插件吗?

更新: 这是在 QtCreator 中如何实现的:

附:请不要试图说服我只使用空格/制表符更好,否则这个问题将变成另一个圣战:)

再说一次我想要实现的目标:Indent with tabs, align with spaces. Vim Tips Wiki

更新 2: 我刚刚提交了一份 Apple Radar 错误报告(增强)rdar://22285639。这里是open radar

更新 3: 我收到了 Apple 的答复。我的错误是 rdar://8165023 的副本。

【问题讨论】:

  • 我正在努力实现同样的目标。您是否偶然找到了解决方案?
  • @user1264176,不幸的是,没有。 Xcode 6 仍然无法进行这种格式化。在 Xcode 中工作时,我不得不切换到空格。一种选择是使用 JetBrains 的 AppCode,但它不是免费的,并且某些操作仍然需要 Xcode。所以我仍然希望苹果有一天会实现它,因为标签,它们现在的实现方式,是不可用的。
  • 感谢您的及时回复。我也不得不切换到空间。如果您在 Xcode 中使用选项卡,那很好,但所有其他编辑器或浏览器都会弄乱格式。
  • @user1264176,不幸的是,如果您只是更改选项卡宽度,Xcode 也会搞砸:) 或者其他具有不同选项卡宽度的人(例如,许多人更喜欢 2 个空格而不是 4 个)将打开您的项目。

标签: xcode coding-style alignment indentation


【解决方案1】:

在 Xcode > 首选项(,):

如果我正确理解您的问题,这应该会为您解决。

【讨论】:

  • 谢谢!但问题在于,这种方式在任何地方都使用了空格。我希望它使用制表符进行缩进,使用空格进行对齐。我喜欢标签,因为它们更灵活。但是您不能将它们用于缩进,因为如果您更改制表符大小,例如,从 4 更改为 2,您的缩进就会被破坏。例如,arg2 和 arg3 不会与 arg1 位于同一列。在我看来,在 XCode 中没有办法做到这一点。我现在将发布来自 QtCreator 的屏幕截图来说明它在那里的样子。
  • 嗯,你的答案显然是最好的:) 对不起,但我不能接受它,因为它不能完全回答我的问题(如果其他人会出现怎么办)。但是赏金和赞成票是你的 :) 谢谢你的关注!
【解决方案2】:

如果要将标准 Xcode 的 +[ 重新映射到 TAB,可以执行以下操作:

  1. 安装一个名为“Karabiner”的程序。

  2. 转到首选项~>“杂项和卸载”

  3. 在“自定义设置”部分单击“打开 private.xml”按钮

  4. 打开文件并将其内容替换为以下代码:

    <?xml version="1.0"?> 
    <root>
        <item>
            <name>Tab instead of Command+[</name>
            <identifier>private.swap_tab_and_cmnd+[</identifier>
            <autogen>
                __KeyToKey__
                KeyCode::TAB, ModifierFlag::NONE,
                KeyCode::BRACKET_RIGHT, ModifierFlag::COMMAND_L | ModifierFlag::NONE
            </autogen>
        </item> 
    </root>
    
  5. 转到首选项~>“更改密钥”~>点击“重新加载 XML”按钮

  6. 在名为“Tab 而不是 Command+[”的复选框中打勾

  7. 享受

PS:请注意,此设置在您的机器上全局有效,而不仅仅是在 Xcode 中。但是,我相信 google 可能会帮助您找到如何进一步自定义它的解决方案,仅将更改应用于 Xcode。

【讨论】:

  • 不是我要找的,但谢谢)您是否与 Karabiner 有任何关系?您将此文本复制粘贴到多个答案中)
  • 不,我和Karabiner 一点关系都没有。您是否尝试过查看“clang-format”或“uncrustify”?也许正确设置这些可能会有所帮助? (见这里的例子——blog.manbolo.com/2015/05/14/code-beautifier-in-xcode
【解决方案3】:

在 XCode 中
Xcode > Preferences 或使用⌘ , 打开Preferences
现在点击Text Edit标签,然后有子标签栏点击Indentation,您可以根据需要更改Indentation的设置

【讨论】:

  • 谢谢,但是 1) 您的回答完全重复了 Undo 的回答; 2)它没有回答我的问题——请阅读撤消答案下的讨论。
  • 好吧,我认为 Xcode 没有这个,如果你在 appDelegate.swift 中看到可以找到具有多个参数的长方法名称,那么你会看到苹果本身使用相同的模式而不是你寻找。对我来说 Xcode 不支持它,如果你找到任何解决方案然后分享它我很乐意看到它
  • 是的,因此我的问题是 :) 让我们希望 Apple 有一天能够实现它。尽管现在可能为时已晚。我不敢相信我在 6 年前问过这个问题。时间飞逝。无论如何,谢谢!
  • @SultanAli,请删除您的答案,因为它不会对讨论增加任何内容(完全重复,除了超小的和不那么相关的细节)并浪费每个人的时间(在那里阅读和计算是没有新信息)
猜你喜欢
  • 1970-01-01
  • 2018-11-11
  • 1970-01-01
  • 1970-01-01
  • 2020-11-22
  • 1970-01-01
  • 1970-01-01
  • 2012-02-19
  • 2010-10-04
相关资源
最近更新 更多