自动将字符串括在另一个字符串中?

时间:2017-07-19 15:29:49

标签: macos sublimetext3 sublimetext macos-sierra

让我们说我有一些字符串X,并且我希望将其包含在其他字符串中,例如:\emph{X}。是否有一些工具可以让我快速完成这项工作,例如选择文字并按下键盘上的快捷键?我在macOS Sierra的Sublime文本中工作。

1 个答案:

答案 0 :(得分:3)

这可以直接在Sublime中使用插入片段的键绑定,其中片段正文被告知包含当前选中的文本。

对于上面的示例,以下键绑定将包含\emph{}中的选择。我使用 Super + W 进行自己的测试,但你可能想为自己的目的选择更好的东西。

{
    "keys": ["super+w"],
    "command": "insert_snippet",
    "args": {"contents": "\\emph{${0:$SELECTION}}"},
    "context": [
        { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true },
    ]
},

此处包含context会使键绑定仅处于活动状态,而所有游标都至少选择了一个字符。如果需要,您可以完全删除context部分,在这种情况下,键绑定将插入片段并将光标留在大括号之间,或者根据选择的状态包装选择。

如果您的代码段比此更复杂且更复杂(例如多行),尝试将其整个主体插入到键绑定中可能会有点麻烦。在这种情况下,您可能希望使用外部代码段。

为此,您可以从菜单中选择Tools > Developer > New Snippet...,然后使用以下代码段,您应将其保存在Sublime默认的位置:

<snippet>
    <content><![CDATA[
\emph{${0:$SELECTION}}
]]></content>
    <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
    <!-- <tabTrigger>hello</tabTrigger> -->
    <!-- Optional: Set a scope to limit where the snippet will trigger -->
    <!-- <scope>source.python</scope> -->
</snippet>

有了这个,需要修改上面的键绑定,告诉insert_snippet命令插入带有特定文件名而不是原始内容的片段:

{
    "keys": ["super+w"],
    "command": "insert_snippet",
    "args": {"name": "Packages/User/emph.sublime-snippet"},
    "context": [
        { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true },
    ]
},

这里需要注意的是,密钥绑定文件是JSON,因此需要稍微调整代码段的内容以使其成为有效的JSON。在上面的示例中,这意味着使用\\而非\来指定\emph

一般来说,片段中也有自己的特殊字符,所以如果您需要插入$,则需要将其引用为\$,以便Sublime知道您的意思;无论代码段是在代码段文件中还是内联代码,都是如此。

可以在Unofficial Documentation中找到有关键绑定和片段的更多信息,以便更全面地了解所有可能的内容。