自动将字符串放入另一个字符串中?

问题描述:

假设我有一些字符串,X,并且我希望将它包含在其他一些字符串中,例如像这样:\emph{X}。是否有一些工具可以让我快速执行此操作,例如,通过选择文本并按下键盘上的快捷键?我正在macOS Sierra的Sublime文本中工作。自动将字符串放入另一个字符串中?

+0

如果您使用的是LaTeXTools,您可以按Cl,Ce以'\ emph'包装所选文本,请参阅https://latextools.readthedocs.io/en/latest/keybindings/#wrapping-existing-text-in -commands-and-environments(我猜LaTeXing和LaTeXBox有类似的键绑定)。 –

这是直接在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...,并使用代码片段,如下面,你应该在的位置保存崇高默认为:

<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中找到,以获取有关它们可能的一切的更完整图片。

+0

很好的答案,谢谢!这两个键绑定和片段对我来说都是未知的功能。我一定会从这里进一步探索这些! – Speldosa