自动将字符串放入另一个字符串中?
假设我有一些字符串,X
,并且我希望将它包含在其他一些字符串中,例如像这样:\emph{X}
。是否有一些工具可以让我快速执行此操作,例如,通过选择文本并按下键盘上的快捷键?我正在macOS Sierra的Sublime文本中工作。自动将字符串放入另一个字符串中?
这是直接在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中找到,以获取有关它们可能的一切的更完整图片。
很好的答案,谢谢!这两个键绑定和片段对我来说都是未知的功能。我一定会从这里进一步探索这些! – Speldosa
如果您使用的是LaTeXTools,您可以按Cl,Ce以'\ emph'包装所选文本,请参阅https://latextools.readthedocs.io/en/latest/keybindings/#wrapping-existing-text-in -commands-and-environments(我猜LaTeXing和LaTeXBox有类似的键绑定)。 –