编写一个片段,在最后删除初始变量,只留下修改过的变量
Write a snippet that removes the initial variable at the end, leaving only the modified ones
假设我有一个 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
?
您不需要编写任何 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
假设我有一个 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
?
您不需要编写任何 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