请教一个关于yasnippet模板制作的问题

# -*- mode: snippet -*-
# name: parameter-aligment
# key: pa
# type: command
# --
(let ((yas-good-grace nil)
      (parm1 (read-string "Parameter 1: "))
      (parm2 (read-string "Parameter 2: "))
      (parm3 (read-string "Parameter 3: "))
      (parm4 (read-string "Parameter 4: ")))
  (yas-expand-snippet
   (concat
    "// *****************************************************************************\n"
    "// " (format "%-50s, %s\n" parm1 parm2)
    "// " (format "%-50s, %s\n" parm3 parm4)
    "// *****************************************************************************\n"
    )))

输入 pa 按 TAB 补全,根据提示依次输入长度不一的参数名,例如:

a
b
ccccccccccccc
ddddddddddddddddddd

得到:

// *****************************************************************************
// a                                                 , b
// ccccccccccccc                                     , ddddddddddddddddddd
// *****************************************************************************

这种方式的缺点是:输入完最后一个参数,才能看到结果,没有那种编辑实时调整宽度的快感。


2 楼 提到的 package,在 yasnippet 展开的时候使用,是否会冲突?

其实也可以等 yasnippet 展开填写完之后,统一调整。

还可以在 yasnippet 展开的时候启用 evil 的 replace 模式?