Хотя нет определенного синтаксиса для псевдонимов, вы можете достичь того же эффекта, используя post_jump
:
# c.snippets
global !p
def expand(snip):
if snip.tabstop != 1:
return
vim.eval('feedkeys("\<C-R>=UltiSnips#ExpandSnippet()\<CR>")')
endglobal
snippet incstdlib "#include <stdlib.h>" !b
#include <stdlib.h> /* exit(), malloc(), free() */
$0
endsnippet
post_jump "expand(snip)"
snippet incexit "#include <stdlib.h>" !b
incstdlib$1
endsnippet
В этом файле сниппетов триггер incexit
является «псевдонимом» триггера incstdlib
. В действительности incexit
расширяется до incstdlib
и expand(snip)
вызывается, когда UltiSnips переходит на вкладку $1
. expand(snip)
Просто выполняет функцию VimScript , UltiSnips#ExpandSnippet
которая будет расширяться incstdlib
в это окончательном развернутом виде #include <stdlib.h>
.
Другой вариант - вместо этого использовать поддержку регулярных выражений UltiSnips:
snippet "inc(true|false|bool)" "#include <stdbool.h>" r
#include <stdbool.h> /* true, false */
endsnippet
Здесь у вас будет три триггера inctrue
, incfalse
и incbool
они практически одинаковы. Единственным недостатком является то, что плагины автозаполнения, такие как YouCompleteMe, не будут автозаполнять их.