
r-steinerklärt, wie Sie eine Tastenkombination in einem für die Dokumentklasse spezifischen Kontext (z. B. Beamer oder Artikel) definieren können. Wie können Sie dasselbe für einen Snippet tun?
MWE:
<snippet>
<content><![CDATA[
\alert{$1} $0
]]></content>
<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
<tabTrigger>test</tabTrigger>
<!-- Optional: Set a scope to limit where the snippet will trigger -->
<scope>latextools.documentclass.article</scope>
</snippet>
Antwort1
Sie können keine beliebigen Kontexte für Snippets schreiben, sondern nur Bereiche. Daher können Sie dafür kein Snippet erstellen. Sie können jedoch das Snippet-Verhalten emulieren, indem Sie eine Tastenkombination für die tab
Taste erstellen, die nur ausgelöst wird, wenn der Text vor dem Cursor ist test
. Diese Tastenkombination sollte das Wort davor entfernen und das Snippet einfügen. Wenn Sie das Paket „Chain Of Command“ installieren, können Sie einfach diese Tastenkombination verwenden:
{
"keys": ["tab"],
"command": "chain",
"args": {"commands": [
["delete_word", {"forward": false}],
["insert_snippet", {"contents": "\\alert{$1} "}],
]},
"context":
[
{ "key": "selector", "operand": "text.tex.latex" },
{ "key": "preceding_text", "operator": "regex_contains", "operand": "\\btest$", "match_all": true },
{ "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
{ "key": "latextools.documentclass", "operand": "article" },
]
},
Sie können es anpassen, indem Sie den regulären Ausdruck ändern "operand": "\\btest$",
in"operand": "\\byour_trigger$",