有没有办法让一个片段在一个单词后立即起作用?

时间:2012-10-11 01:36:16

标签: vim snipmate

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

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

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

典型用途:

hello test[TAB]

变成了这个:

hello <some code>|</code>

但如果我试试这个:

hellotest[TAB]

它变成了这个:

hellotest_____

_ 是空白区域。有办法解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

如果这就是你的要求,那就没有这种效果的设定。你不得不看看源头并自己做一些改变,我担心。

此外,它可能被视为一种限制,但它肯定不是一个错误所以你所追求的是一个改进,而不是一个“修复”。不过,我的建议是按照设计使用它:即使触发器是另一个单词的一部分也没有任何意义。空间是分离想法和文字的最自然的方式。