【问题标题】:Xcode block (NSMallocBlock) indentation (braces automatically starting from new line)Xcode 块 (NSMallocBlock) 缩进(大括号自动从新行开始)
【发布时间】:2016-01-31 22:56:49
【问题描述】:

我想用大括号从新行开始打开块。

让我们远离关于这是否是一个好决定的哲学讨论 -- regardless of 'where' and 'when', 'how' remains absolute.

所以,问题描述如下:

有没有办法做到这一点?


我找了很久,但没有找到任何解决方案。

我已经知道以下事情:

  1. Snippet Edit -- 这个小程序将允许编辑默认 Xcode 的代码 sn-ps。因此,您将能够在 ifforwhile 等中从新行打开大括号。但是,这不允许更改块缩进。

  2. Uncrustify -- 这可能会解决我的问题,但它看起来并不容易设置。并且它仅在 已经编写好的代码之后格式化代码,而不是格式化 'on the go'。此外,即使我正确设置了uncrustify,它仍然会很慢——大约需要单击4 次鼠标来格式化块,这很耗时。

有人知道其他解决方案吗?

编辑:

更具体地说,我希望在此步骤中按ENTER立即缩进块:

【问题讨论】:

  • Xcode 强制执行一种特定的样式。没有插件你不能改变它。
  • @Sulthan,你知道有什么插件可以帮助解决这个问题吗?
  • 问题是您无法设置通用样式格式化程序,甚至无法以这种样式格式化。这种风格是如此具体,以至于没有人实施可以启用它的选项。这包括在其他 IDE 中编写 Obj-C。
  • @Sulthan 我也喜欢这种风格。而且我不知道,换行符开头的 {} 是否真的很具体。我会称之为括号的古典风格。

标签: objective-c xcode objective-c-blocks indentation


【解决方案1】:

我找到的最简单的解决方案是:

下载Karabiner并更改您的private.xml(您也可以查看文档here

您的private.xml 可能如下所示:

<?xml version="1.0"?>
<root>
    <item>
        <name>Command+Enter to complete single block</name>
        <identifier>private.swap_cmnd+Enter_to_complete__single_block</identifier>
        <autogen>
            __KeyToKey__
            KeyCode::RETURN, ModifierFlag::COMMAND_L | ModifierFlag::NONE,
            KeyCode::RETURN,

            KeyCode::CURSOR_DOWN,
            KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_L,
            KeyCode::DELETE, ModifierFlag::COMMAND_L,
            KeyCode::BRACKET_RIGHT, ModifierFlag::SHIFT_L,
            KeyCode::BRACKET_RIGHT,
            KeyCode::SEMICOLON,
            KeyCode::CURSOR_UP,
            KeyCode::CURSOR_UP,
            KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_L,
            KeyCode::CURSOR_LEFT,
            KeyCode::RETURN,
            KeyCode::CURSOR_DOWN,
            KeyCode::CURSOR_DOWN,
            KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_L,

            KeyCode::CURSOR_UP, ModifierFlag::SHIFT_L,
            KeyCode::CURSOR_UP, ModifierFlag::SHIFT_L,
            KeyCode::CURSOR_UP, ModifierFlag::SHIFT_L,

            KeyCode::I, ModifierFlag::CONTROL_L,
            KeyCode::CURSOR_RIGHT,
            KeyCode::CURSOR_UP,
            KeyCode::CURSOR_LEFT, ModifierFlag::SHIFT_L,
            KeyCode::TAB,
        </autogen>
    </item>

    <item>
        <name>Option+Enter to complete double block</name>
        <identifier>private.swap_Option+Enter_to_complete_double_block</identifier>
        <autogen>
            __KeyToKey__
            KeyCode::RETURN, ModifierFlag::OPTION_L | ModifierFlag::NONE,
            KeyCode::CURSOR_RIGHT,
            KeyCode::RETURN,
            KeyCode::CURSOR_UP,
            KeyCode::CURSOR_LEFT, ModifierFlag::COMMAND_L,
            KeyCode::TAB,

            KeyCode::RETURN,

            KeyCode::CURSOR_DOWN,
            KeyCode::CURSOR_DOWN,
            KeyCode::CURSOR_LEFT, ModifierFlag::COMMAND_L,
            KeyCode::TAB,
            KeyCode::RETURN,
            KeyCode::DELETE,
            KeyCode::CURSOR_DOWN,
            KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_L,
            KeyCode::DELETE, ModifierFlag::COMMAND_L,
            KeyCode::BRACKET_RIGHT, ModifierFlag::SHIFT_L,
            KeyCode::BRACKET_RIGHT,
            KeyCode::SEMICOLON,
            KeyCode::CURSOR_UP,
            KeyCode::CURSOR_UP,
            KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_L,
            KeyCode::CURSOR_LEFT,
            KeyCode::RETURN,
            KeyCode::CURSOR_UP,
            KeyCode::CURSOR_UP,
            KeyCode::CURSOR_UP,
            KeyCode::CURSOR_UP,
            KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_L,
            KeyCode::CURSOR_LEFT,
            KeyCode::RETURN,
            KeyCode::CURSOR_DOWN,
            KeyCode::CURSOR_DOWN,
            KeyCode::CURSOR_DOWN,
            KeyCode::CURSOR_DOWN,
            KeyCode::CURSOR_DOWN,
            KeyCode::CURSOR_DOWN,
            KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_L,

            KeyCode::CURSOR_UP, ModifierFlag::SHIFT_L,
            KeyCode::CURSOR_UP, ModifierFlag::SHIFT_L,
            KeyCode::CURSOR_UP, ModifierFlag::SHIFT_L,
            KeyCode::CURSOR_UP, ModifierFlag::SHIFT_L,
            KeyCode::CURSOR_UP, ModifierFlag::SHIFT_L,
            KeyCode::CURSOR_UP, ModifierFlag::SHIFT_L,
            KeyCode::CURSOR_UP, ModifierFlag::SHIFT_L,

            KeyCode::I, ModifierFlag::CONTROL_L,
            KeyCode::CURSOR_RIGHT,
            KeyCode::CURSOR_UP,
            KeyCode::CURSOR_UP,
            KeyCode::CURSOR_UP,
            KeyCode::CURSOR_UP,
            KeyCode::CURSOR_UP,
            KeyCode::CURSOR_LEFT, ModifierFlag::COMMAND_L,
            KeyCode::TAB,
        </autogen>
    </item>
</root>

完成此操作后,您现在可以通过按+ENTER而不是ENTER打开块,打开块时按+@987654335 @)。这是preview(放慢速度,以便您查看详细信息)。

以上内容仅适用于单个块。如果要同时打开两个区块,可以按ALT+ENTER。这是preview(放慢速度,以便您查看详细信息)。

这是preview的实际速度:

【讨论】:

    【解决方案2】:

    只需手动将您开始大括号放入新行,那么您的缩进应该是好的。

    【讨论】:

      【解决方案3】:

      我认为在您按下ENTER 后没有办法自动执行此操作。

      可以做什么,点击ENTER让它填满sn-p,然后在{之前再次点击ENTER。 Xcode 之后按照您喜欢的方式对其进行格式化。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-28
        • 2021-07-30
        • 2013-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多