vim和snipmate / snippets:如何创建自定义行为

时间:2013-02-09 16:53:52

标签: vim code-snippets snipmate

这是我的代码段:

# Get repository of a table:
snippet repo
    $$2 = $this->getRepository('${1:Bundle}:${2:TableName}')
    ${3}

当我使用它时,这是它可能产生的结果:

$Person = $this->getRepository('MyBundle:Person')
$Address = $this->getRepository('MyBundle:Address')

我希望第一个小写,总是小写,并给我一些像:

$person = $this->getRepository('MyBundle:Person')
$address = $this->getRepository('MyBundle:Address')
...

。有没有办法用狙击手做到这一点?

2 个答案:

答案 0 :(得分:1)

我不认为这可能与snipmate有关,但你可能会看看UltiSnips。 UltiSnips使用非常相似的模板语法(非常容易转换),并且更加通用。 http://www.vim.org/scripts/script.php?script_id=2715

答案 1 :(得分:1)

使用 snipMate 无法做到这一点。我试图实现这一点,但是(特别是当转换改变了字符数时),当前的实现难以实现。

这可能是转移到the UltiSnips plugin的最佳理由,{{3}}是一种现代的维护替代方案(但需要Python支持)。在那里,该功能称为转换,并使用${<tab stop no/regular expression/replacement/options}语法。您可以使用\L正则表达式原子来小写替换。