如何使用键绑定将任意一段文本包装在 Sublime Text 3 的缩进块中?

How can I wrap an arbitrary piece of text in an indented block in Sublime Text 3 using a keybinding?

假设我有:

doSomeAction()

并且我想用一些任意文本将其包装起来,以便缩进原始文本:

if myValue
  doSomeAction()
end

理想情况下,我想突出显示我的行,按一些键绑定,并缩进原始文本,并将光标放在第一行,我将在其中键入 if myValue(或其他任何内容) ).

我意识到这取决于我使用的编程语言,主要是关于 原始行之后的内容。在 Ruby 中,我需要 end,在 Javascript 中,我需要 },而在 Coffeescript 中,我什么都不需要 :-) 我想如果它留空,这样我可以按 tab 到达那个位置,我可以自己输入需要的内容。

您可以为此创建一个片段。示例:

<snippet>
<content><![CDATA[
${1:if condition}
    $SELECTION
${2:end}

]]></content>
</snippet>

重要说明:Whosebugs 显示此文本时带有空格,但请记住在片段中使用制表符缩进:请参阅此答案底部的 Tyler 编辑和评论。

如您所见,它可以有多个以 $ 分隔位置开头的部分,您可以使用 tab 导航所有部分,这使您可以轻松更改条件的内容或添加额外的内容里面的内容。您可以轻松更改结构、添加或删除部分、内容、更改默认值等。


结果:


¿如何创建代码段?

使用菜单工具 > 新代码段,然后将给定的文件内容放入新文件中。使用(示例)文件名 wrap.sublime-snippet 将其保存在 sublime Packages/User 中。通常 Packages/User 是显示的默认文件夹,通常通过菜单 Preferences>Browse Packages.

打开 Packages 文件夹

¿如何添加快捷键?

转到菜单 Preferences > Key Bindings-user 并将您的键绑定添加到全局数组中,使用您喜欢的自由键组合并保存文件。如果你没有任何其他用户键绑定,这个文件内容应该是这样的(记得使用你给代码片段的名字):

[
    { "keys": ["ctrl+alt+z"], "command": "insert_snippet", "args": {"name": "Packages/User/wrap.sublime-snippet"}}   
]

编辑:始终使用制表符在片段中缩进,如 recommended by Sublime Text help:

When writing a snippet that contains indentation, always use tabs. The tabs will be transformed into spaces when the snippet is inserted if the option translateTabsToSpaces is set to true.