แม้ว่าจะไม่มีไวยากรณ์ที่เฉพาะเจาะจงสำหรับนามแฝงคุณสามารถบรรลุผลเดียวกันโดยใช้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 จะไม่เติมข้อความอัตโนมัติ