编写一个片段,在最后删除初始变量,只留下修改过的变量

时间:2016-05-31 09:34:23

标签: python vim ultisnips

假设我有一个UltiSnips片段,它将用下划线替换所有特殊字符。

我有这个:

snippet us "replace specials with underscores" w
${1:${VISUAL}}
`!p
import re
snip.rv = re.sub("[^0-9a-zA-Z]", "_", t[1])
`
endsnippet

现在Hello world!之类的东西变成了:

Hello world!
Hello_World_

然而,最后,我想只保留第二行并丢弃我最初输入的内容。那可能吗?也许使用post_expand

1 个答案:

答案 0 :(得分:2)

你不需要编写任何python代码。您的代码段简单如下:

snippet us "replace specials with underscores" w
${1:${VISUAL/[^0-9a-zA-Z]/_/g}}
endsnippet

以更一般的方式,我们能够通过snip.v.text属性检索在可视模式中选择的文本。所以只需更改t[1],然后删除${1:${VISUAL}}

snippet us "replace specials with underscores" w
`!p
import re
snip.rv = re.sub("[^0-9a-zA-Z]", "_", snip.v.text)
`
endsnippet