Emacs 当钥匙前没有空间时,喷嘴不会膨胀

Emacs 当钥匙前没有空间时,喷嘴不会膨胀,emacs,code-snippets,Emacs,Code Snippets,在emacs中使用yasnippet时,如果在应该触发代码段的键之前没有空格,则按下Tab键时代码段不会展开。是否可以使代码段即使前面没有空间也能展开 这是一个测试用例。制作以下代码片段 # -*- mode: snippet -*- # name: \textsubscript (from fixltx2e) # key: tsub # -- \textsubscript{$1}$0 试试看。请注意,只要tsub前面有空格,它就会展开,而当tsub前面有字母时,它不会被触发。另外,请注意,当

在emacs中使用yasnippet时,如果在应该触发代码段的键之前没有空格,则按下Tab键时代码段不会展开。是否可以使代码段即使前面没有空间也能展开

这是一个测试用例。制作以下代码片段

# -*- mode: snippet -*-
# name: \textsubscript (from fixltx2e)
# key: tsub
# --
\textsubscript{$1}$0
试试看。请注意,只要tsub前面有空格,它就会展开,而当tsub前面有字母时,它不会被触发。另外,请注意,当前面有标点符号或括号时,它会正确展开


类似的行为也在内部观察到,yas/snippet使用函数
向后跳过语法来查找模板键。因此,为了识别代码段键,必须使用不同语法类中的字符将其与前面的文本分开。语法类包括“单词成分”、“标点符号”、“空格”等。详细信息如下

正如我所读到的,这意味着如果要在另一个字母之后立即插入模板,就不能使用一个全是字母(即单词成分)的键

这对你来说不是个好消息,但也许以下是一个可以接受的解决方案?实际上,您应该在希望添加下标的单词之前而不是之后调用代码段


这可能值得作为错误或功能请求报告给yasnippet维护人员。

您可以将其作为功能请求提交给yanippet邮件列表(不要使用googlecode问题跟踪器,我正在将yasnippet移动到github),但我认为不会添加它。以这种方式寻找代码段键是非常低效的,而且它不遵循作为yasnippet基础的TextMate行为。我使用多个类似的latexish标记片段,所有这些片段都使用`#binding:\`指令绑定到“\”。
# -*- mode: snippet -*-
# name: \textsubscript (from fixltx2e)
# key: tsub
# --
$1\textsubscript{$2}$0