1

每当我尝试在一个单词之后使用一个片段(使用 snipMate)时,没有空格,它就不起作用。所以我必须点击空格,输入我的片段,点击标签,然后消除空格。有没有更好的方法来做到这一点?有没有办法让片段在一个单词之后立即起作用?这就是我的意思:

让我们说我的片段是这样的:

snippet test
        <some code>${1}</code>${2}

典型用途:

hello test[TAB]

变成这样:

hello <some code>|</code>

但如果我试试这个:

hellotest[TAB]

它变成了这样:

hellotest_____

_是空格。有没有办法来解决这个问题?

4

2 回答 2

2

Vim 缩写可以是三种类型(full-id、end-id 和 non-id, cp. :help abbreviations),这有助于解决这个问题。然而,snipMate 允许片段名称使用所有非空白字符,因此必须依靠空白进行分隔。

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

let word = matchstr(getline('.'), '\S\+\%'.col('.').'c')
于 2012-10-11T07:38:57.837 回答
0

如果这就是您所要求的,则没有这种效果。恐怕您将不得不查看源并自己进行更改。

此外,它可能被视为一种限制,但它绝对不是错误,所以你所追求的是改进,而不是“修复”。不过,我的建议是按设计使用它:让触发器工作,即使它们是另一个词的一部分,也完全没有意义。空格是分隔想法和单词的最自然方式。

于 2012-10-11T05:44:33.430 回答