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 回答