Embora não haja sintaxe específica para aliases, você pode obter o mesmo efeito usando 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
Nesse arquivo de trechos, o gatilho incexit
é um "alias" do gatilho incstdlib
. Na realidade, incexit
expande para incstdlib
e expand(snip)
é chamado quando o UltiSnips se move para o tabstop $1
. O expand(snip)
apenas executa a função VimScript UltiSnips#ExpandSnippet
que se expandirá incstdlib
para sua forma expandida final #include <stdlib.h>
.
Outra opção é usar o suporte à expressão regular do UltiSnips:
snippet "inc(true|false|bool)" "#include <stdbool.h>" r
#include <stdbool.h> /* true, false */
endsnippet
Aqui você terá três gatilhos inctrue
, incfalse
e incbool
esses são efetivamente os mesmos. A única desvantagem é que plugins de preenchimento automático, como o YouCompleteMe, não serão preenchidos automaticamente.