Sublime Text 2 - 括号和HTML标记的自动缩进

时间:2015-07-06 15:56:45

标签: autocomplete format sublimetext2 indentation auto-indent

注意:在这些例子中,我将使用管道符号“|”来表示光标)

在Sublime Text 2中,当我输入一个大括号时,它会自动添加一个匹配的大括号:

{|}

将光标放在两个大括号之间。然后,当我点击 Enter 时,它会自动添加一个额外的新行和缩进,从而产生:

{
    |
}

但是,括号和HTML元素使用相同的缩进行为。例如,如果我键入一个括号“[”,它会自动添加匹配的括号,如:

[|]

但是当我点击 Enter 时,结果是:

[
|]

它不会添加额外的行或缩进。同样,当我输入“div.some-class”,然后 Tab 时,我得到:

<div class="some-class">|</div>

但是当我点击 Enter 时,我得到了

<div class="some-class">
|</div>

不是我想要的。唯一正常工作的情况是使用大括号。但在所有3个案例(大括号,括号,html元素)中,我想要添加额外的行和缩进。所以他们应该看起来像:

括号:

{
    |
}

支架:

[
    |
]

HTML元素:

<div class="some-class">
    |
</div>

我该如何做到这一点?

2 个答案:

答案 0 :(得分:0)

安装EMMET插件,它将为您提供大量额外的强大功能,尤其适用于编写HTML和CSS。 :)

如果您尚未安装Package控件(用于轻松安装新的软件包/插件),请使用说明here进行安装。

然后您只需按CTRL+SHIFT+P并编写Package Control : Instal Package并找到EMMET并进行安装即可。完成后重新启动Sublime Text,它应该工作:)

答案 1 :(得分:0)

解释

我已经为自己想出了如何做你名单上的其中一件事。

我修改了按"enter"键时运行的正则表达式。

旧的正则表达式检查了此"operand": "\\{$"和此"operand": "^\\}"

我使用管道or添加了|项检查,以同样方式检查[("operand": "\\{$|\\[$|\\($""operand": "^\\}|^\\]|^\\)"

路线

导航至偏好设置&gt;密钥绑定 - 用户

就个人而言,我通过在顶部放置简短的简单绑定以及在底部放置较大的块绑定/关注点来保持此文件的有序性。我认为以下是一个更大的块。

将此新代码粘贴到文件中:

  // Auto-insert line and indent on square bracket and bracket (parenthesis)
  { "keys": ["enter"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/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 }
    ]
  },
  { "keys": ["shift+enter"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/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 }
    ]
  },

一些注意事项:

  • 正如我所说,我的代码用于括号。 (Sublime将括号称为&#34;括号&#34;,区别于&#34;方括号&#34;和&#34;括号&#34 ;.)
  • 如果您不希望这在括号上工作,请更改第一个&#34;操作数&#34;检查:"operand": "\\{$|\\[$"和&#34;操作数&#34;检查下一行:"operand": "^\\}|^\\]"
  • 最后,我猜猜Sublime正确地解析它,但是我的右大括号结尾处有一个逗号,,假设你有更多的键绑定跟随。如果它是文件末尾的结束方括号之前的最后一个绑定,则应删除逗号。

此外,至少在Sublime Text 3中,您对<div>缩进的问题已经修复。