我想替换:
getLeftChild
getRightChild
与
leftchild
rightchild
我知道如何在两次传递中执行此操作::s/getLeftChild/leftchild/g
和:s/getRightChild/rightchild/g
。但有什么像:s/get\(.*\)Child/<if \1 == "Left" then replace it with "left", else "right">child/g
?
答案 0 :(得分:3)
如果您想一次性进行替换,可以使用内置的tolower()
函数:
%s/\vget(.*Child)/\=tolower(submatch(1))/
您可以调整真实文件的搜索模式。
或者您可以使用\L
进行小写替换。 (由@Meninx评论)。
%s/\vget(.*Child)/\L\1/
也许您想检查\L and \l
和\U and \u
答案 1 :(得分:2)
之前我有类似的需求。我可能做
:1,2s/get//
(好吧,这会把它变成
1 LeftChild
2 RightChild
但我更有可能做<C-v><count>j$ugvV:s/^get//
(其中<count>
表示类似1或10的内容)(尽管如果它是这样的段落,我更有可能使用{ {1}}或者v}
可以选择paragaph。