Meskipun tidak ada sintaks khusus untuk alias, Anda dapat mencapai efek yang sama dengan menggunakan 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
Dalam file cuplikan ini pemicunya incexit
adalah "alias" dari pemicu incstdlib
. Pada kenyataannya incexit
mengembang ke incstdlib
dan expand(snip)
disebut ketika UltiSnips pindah ke tabstop $1
. The expand(snip)
hanya mengeksekusi fungsi VimScript UltiSnips#ExpandSnippet
yang akan memperluas incstdlib
ke bentuk akhir diperluas itu #include <stdlib.h>
.
Pilihan lain adalah menggunakan dukungan ekspresi reguler UltiSnips sebagai gantinya:
snippet "inc(true|false|bool)" "#include <stdbool.h>" r
#include <stdbool.h> /* true, false */
endsnippet
Di sini Anda akan memiliki tiga pemicu inctrue
, incfalse
dan incbool
itu sama saja. Satu-satunya kelemahan adalah bahwa plugin pelengkapan otomatis seperti YouCompleteMe tidak akan melengkapinya secara otomatis.