如何才能更健壮地输入snippet?

用yasnippet输入snippet总感觉不是太健壮。比如在latex中经常输入的\frac{a}{b}。如果已经输入完a位置的内容,在输入b位置的内容时,发现a中有需要修改的地方,就没有办法自动跳回a位置。如果手动将光标移动到a位置进行修改的话,那修改完成后也不能再次跳到b位置了。今天发现一个新包似乎可以解决这一类问题。

大家还有什么更好的方法吗?

1 个赞

试试yas-prev-field

输入 b 的时候,按下 S-<tab> (shift+tab) 看看呢?

确实如楼上二位所说,用S-<tab>可以从b位置跳回a位置。那手动移动光标到a位置后,有没有什么办法依然可以跳转呢?

手动移出当前slot就会退出yas的状态,可以看到有条message提示的。这是yas的一个缺点

C-/ 直到 yas 的状态恢复……

3 个赞

原来撤销还能恢复yas的状态,长见识了。但是这又有一个问题,如果手动将光标移到a处,然后输入了一些内容,想用这种办法恢复yas的状态的话,岂不是输入的内容也会被撤销掉?

有没有可能光标停留在a或b处的时候,自动进入某种状态呢?

这就不清楚了,我对 yasnippet 也不是很熟,只会一些简单的操作……

yasnippet中用TABS-TAB切换位置没有问题

yas最烦人的一点是经常在行中按TAB调整缩进时触发了展开。最好能够判断光标只有在词尾时才触发。

1 个赞

可以自己手动 hack 一下

(advice-add 'yas-expand :around
            (lambda (orig-func &rest _)
              (if (memq (char-after) '(?\C-j ?  nil))
                  (call-interactively orig-func)
                (call-interactively #'indent-for-tab-command))))
1 个赞

这个包 tempel-collection 配合 tempel 不错,弥补了 tempel 默认模板的匮乏。

1 个赞