Sublime Text 3 Reindent在PHP中使用正确的数组括号

时间:2014-03-19 14:49:14

标签: sublimetext2 sublimetext sublimetext3

我遇到类似that

的问题

但上面链接中的回答没有帮助我。我习惯于在编码时重新整理整个文件,我非常喜欢Sublime Text。但这个错误让我很生气。所以我需要使用快捷方式重新整理整个PHP文件,并且不要错误缩进。

这就是我需要的:

这就是它的作用:

3 个答案:

答案 0 :(得分:1)

作为@BullfrogBlues mentions in a comment,Sublime PHP语法插件有一个解决方案。我不想要整个包,但幸运的是,很容易从那里提取出数组缩进规则:

https://github.com/gerardroche/sublime-php-grammar/blob/master/Indentation%20Rules%20-%20Arrays.tmPreferences

只需将该文件保存到所有自定义代码段所在的同一目录中(在Mac上~/Library/Application Support/Sublime Text 3/Packages/User,不确定Windows / Linux)并且瞧!

答案 1 :(得分:0)

以下解决方案取自SublimeText Forum

将此添加到您的键绑定中:

{ "keys": ["enter"], "command": "insert_snippet", "args": { "contents": "\n\t$0\n" }, "context":
    [
        { "key": "setting.auto_indent", "operator": "equal", "operand": true },
        { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
        { "key": "selector", "operator": "equal", "operand": "punctuation.section.array.end.php", "match_all": true },
        { "key": "preceding_text", "operator": "regex_contains", "operand": "array\\($", "match_all": true },
        { "key": "following_text", "operator": "regex_contains", "operand": "^\\)", "match_all": true },
    ]
},

答案 2 :(得分:-1)

我正在使用Sublime Text 3,可以使用该页面上的说明解决此问题。我在这里复制相同的说明以供参考,我会尝试提供一些提示,以找出它不适合你的原因。

首先,我在我的键绑定设置中添加了这些行(首选项 - >键绑定 - 用户):

{ "keys": ["enter"], "command": "run_macro_file", "args": {"file": "Packages/User/Add Line in Braces.sublime-macro"}, "context":
  [
    { "key": "setting.auto_indent", "operator": "equal", "operand": true },
    { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
    { "key": "preceding_text", "operator": "regex_contains", "operand": "\\($", "match_all": true },
    { "key": "following_text", "operator": "regex_contains", "operand": "^\\)", "match_all": true }
  ]
}

此处必须注意此设置文件是JSON-Array,上面的代码必须用括号括起来:

[
  // Copy above configuration here
]

如果您的设置文件中已有一些键绑定,则必须用逗号分隔它们:

[
  {
    // Some existing keybindings
  },
  // Copy above configuration here
]

然后,您应该在Sublime Text 3的用户文件夹中创建一个宏文件。在哪里找到此文件夹取决于您使用的操作系统。例如,在Ubuntu上它是:

  

〜/的.config /升华文本-3 /包/用户

在此文件夹中创建一个新文件,并将其命名(注意案例和空格):

  

在Braces.sublime-macro中添加行

在此文件中,复制以下脚本并保存:

[
    {"command": "insert", "args": {"characters": "\n\n"} },
    {"command": "left_delete", "args": null},
    {"command": "move", "args": {"by": "lines", "forward": false} },
    {"command": "move_to", "args": {"to": "hardeol", "extend": false} },
    {"command": "reindent", "args": {"single_line": true} }
]

这必须有效,对我有用。