Vim 有没有一种方法可以让代码片段在一个单词之后立即工作?

Vim 有没有一种方法可以让代码片段在一个单词之后立即工作?,vim,snipmate,Vim,Snipmate,每当我试图在一个单词后使用一个片段(使用snipMate)时,如果没有空格,它就不起作用。所以我必须点击空格,输入我的代码片段,点击tab,然后删除空格。有更好的方法吗?有没有办法让狙击手在一句话刚说完就开始工作?我的意思是: 让我们假设我的片段是: snippet test <some code>${1}</code>${2} 变成这样: hello <some code>|</code> hellotest_____ 它变

每当我试图在一个单词后使用一个片段(使用snipMate)时,如果没有空格,它就不起作用。所以我必须点击空格,输入我的代码片段,点击tab,然后删除空格。有更好的方法吗?有没有办法让狙击手在一句话刚说完就开始工作?我的意思是:

让我们假设我的片段是:

snippet test
        <some code>${1}</code>${2}
变成这样:

hello <some code>|</code>
hellotest_____
它变成这样:

hello <some code>|</code>
hellotest_____

\uu为空白。有没有办法解决这个问题?

如果你是这么问的,那就没有相应的设置。恐怕您必须查看源代码,然后自己在那里进行更改


此外,它可能会被视为一种限制,但它肯定不是一个bug,所以您所追求的是一种改进,而不是“修复”。不过,我的建议是按照设计的方式使用它:让触发器工作,即使它们是另一个单词的一部分,也毫无意义。空格是分隔思想和单词的最自然的方式。

Vim缩写可以有三种类型(完整id、结束id和非id,cp.
:帮助缩写
),这有助于解决此问题。但是,snipMate允许代码段名称使用所有非空白字符,因此必须依靠空白分隔

您必须修改代码段名称的解析,在
plugin/snipMate.vim
中,它位于函数
TriggerSnippet()

let word = matchstr(getline('.'), '\S\+\%'.col('.').'c')