2016-05-12 11 views
1

Ich versuche, ein Snippet zu machen, die auf einem Textblock, der Leerzeichen enthält, dh nach der Eingabe ALTER AGGREGATE und drücken Tab auslösen werde ich Schnipsel auslösen möchten:Snippet Tabulatorvervollständigung die Raum umfasst

<snippet> 
    <content><![CDATA[triggered]]></content> 
    <tabTrigger>ALTER AGGREGATE</tabTrigger> 
</snippet> 

Aber leider funktioniert das nicht.

Ich habe dann versucht, Flucht für den Raum zu verwenden: <tabTrigger>ALTER&#160;AGGREGATE</tabTrigger>, aber das hat nicht funktioniert.

Ist das überhaupt möglich?

+1

Leider ist es nicht. Snippets lösen bei bestimmten Wörtern aus, die in Regex-Sprache sowohl Leerzeichen als auch Tabulatoren und Zeilenumbrüche ausschließen. – MattDMo

Antwort

0

Snippet-Registerkartenauslöser können leider nichts enthalten, was von Sublime Text als Worttrennzeichen betrachtet wird.

Allerdings ist es möglich, diese Trigger mit einer Tastenkombination zu emulieren, wenn Sie den Auslöser Text im Dokument behalten wollen:

{ "keys": ["tab"], "command": "insert_snippet", "args": { "name": "Packages/User/alter_aggregate.sublime-snippet" }, 
    "context": 
    [ 
     { "key": "preceding_text", "operator": "regex_match", "operand": "\\bALTER AGGREGATE$", "match_all": true }, 
     { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, 
     { "key": "following_text", "operator": "regex_match", "operand": "^$", "match_all": true }, 
     { "key": "selector", "operator": "equal", "operand": "source.sql", "match_all": true }, 
    ] 
}, 

dies voraus, dass Sie das Snippet in Ihrem Packages/User Ordner mit dem Namen gespeichert haben alter_aggregate.sublime-snippet.

Beispiel Snippet Inhalt (beachten Sie, es ALTER AGGREGATE fehlt aber beginnt mit einem Raum:

<snippet> 
    <content><![CDATA[ 
${1:myavg(integer)} RENAME TO ${2:newname}; 
]]></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.sql</scope> 
</snippet> 

Dann eingeben ALTER AGGREGATETab geben Ihnen:

ALTER AGGREGATE myavg(integer) RENAME TO newname; 

mit der Auswahl zunächst über myavg(integer) und Drücken von Tab verschiebt es zur newname, für die Bequemlichkeit.

Verwandte Themen