2

これを機能させるのに問題があります。現在のファイルの名前を取得してクラス名に展開するVimスニペットを作成しています。

現在のファイル名が次の場合: some_awesome_class.foo... スニペットは次のように展開されます。class SomeAwesomeClass

これまでのところ、私は持っています:

substitute(Filename(), '\(^.\|_\a\)', '\u&', 'g')

..しかし、これはすべてのアンダースコアに正しく一致しますが、最初の文字のみを大文字にします。私が探しているのは、アンダースコアを検索の一部として使用する方法ですが、アンパサンドで一致させる方法ではないと思います。つまり、検索しますが、一致する_\aだけ\aです。

どんな助けでも大歓迎です!

4

4 に答える 4

5

ここに提案があります:

s/\v(^|_)(\a)/\u\2/g
于 2012-08-24T20:09:27.080 に答える
4

との一致から行頭アンダースコアを除外する必要があります\zs

^.\|_\zs\a

これはうまくいきます。

:help \zsおよびを参照してください:help \ze

于 2012-08-24T20:14:09.267 に答える
1

( ) を使用してそれらを単語境界に分割し、各単語をキャメルケースにする必要があります。

:s/_\(.\)/\u\1/g

それを試してみてください..

于 2012-08-24T20:02:11.040 に答える
1

別の方法: 最初に単語 delim として _ を追加します

:set iskeyword-=_それから

:%s/(\<)(.\{1})/\u\2/g
于 2012-08-24T20:42:05.950 に答える