Хоча для псевдонімів не існує конкретного синтаксису, ви можете досягти такого ж ефекту, використовуючи 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, не заповнять їх автоматично.