Mặc dù không có cú pháp cụ thể cho các bí danh, bạn có thể đạt được hiệu quả tương tự bằng cách sử dụng 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
Trong tệp đoạn trích này, trình kích hoạt incexitlà "bí danh" của trình kích hoạt incstdlib. Trong thực tế incexitmở rộng đến incstdlibvà expand(snip)được gọi khi UltiSnips di chuyển đến tabstop $1. Hàm expand(snip)thực thi hàm VimScript UltiSnips#ExpandSnippetsẽ mở rộng incstdlibthành dạng mở rộng cuối cùng của nó #include <stdlib.h>.
Một tùy chọn khác là sử dụng hỗ trợ biểu thức chính quy UltiSnips thay thế:
snippet "inc(true|false|bool)" "#include <stdbool.h>" r
#include <stdbool.h> /* true, false */
endsnippet
Ở đây bạn sẽ có ba kích hoạt inctrue, incfalsevà incboolđó là hiệu quả như nhau. Hạn chế duy nhất là các plugin tự động hoàn thành như YouCompleteMe sẽ không tự động hoàn thành các plugin đó.