2

すべての特殊文字をアンダースコアに置き換える 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_

ただし、最後に、最初に入力したものを破棄して、2 行目だけを残しておきたいと思います。それは可能ですか?たぶん使用post_expand

4

1 に答える 1

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
于 2016-05-31T14:25:29.173 に答える