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

Automatically enclose a string within another string?

假设我有一些字符串 X,并且我希望将其包含在其他一些字符串中,例如:\emph{X}。是否有一些工具可以让我快速完成此操作,例如通过选择文本并按键盘上的快捷键?我在 macOS Sierra 中使用 Sublime text。

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

对于上面的示例,以下键绑定会将 selection 包装在 \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 使键绑定仅在所有游标至少有一个字符 selected 时有效。如果需要,您可以完全删除 context 部分,在这种情况下,键绑定将插入代码段并将光标留在大括号之间,或者包裹 selection,具体取决于 select离子.

如果您的代码段比这更复杂和复杂(例如多行),尝试将其整个主体插入键绑定可能会有点费力。在这种情况下,您可能想改用外部代码段。

为此,您可以从菜单中 select 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.

Snippets 通常也有自己的特殊字符,所以如果你需要插入一个 $ 你需要将它引用为 $ 以便 Sublime 知道你的意思;无论代码片段是在代码片段文件中还是内联,都是如此。

可以在 Unofficial Documentation 中找到有关键绑定和片段的更多信息,以更完整地了解它们的所有功能。