gpt4 book ai didi

regex - 如何在 vim 中使用正则表达式来切换文件中所有字符的大小写

转载 作者:行者123 更新时间:2023-12-05 09:01:24 25 4
gpt4 key购买 nike

我有一个包含以下文本的文件

Lorem IpSuM is SIMPLY duMMy TeXt of the PrINtinG and typesetting industry.
Lorem Ipsum has been the industry's stanDaRd dummy text ever since the 1500s,
whEn an unknown printer took a galley of type and sCrAMBled it to MakE a type specimen BoOk.

切换所有字符的大小写后,文本文件应如下所示:

lOREM iPsUm IS simply DUmmY tExT OF THE pRinTINg AND TYPESETTING INDUSTRY.
lOREM iPSUM HAS BEEN THE INDUSTRY'S STANdArD DUMMY TEXT EVER SINCE THE 1500S,
WHeN AN UNKNOWN PRINTER TOOK A GALLEY OF TYPE AND ScRambLED IT TO mAKe A TYPE SPECIMEN bOok.

我正在使用以下正则表达式模式:

%s/\<\([A-Z\s\]+\)\>/\L&/

但是 vi 编辑器抛出一个错误:

E486: Pattern not found: \<\([A-Z\s\]+\)\>/\L&/

在 vim 中使用正则表达式一次切换文件中所有字符大小写的正确模式是什么?

最佳答案

为什么要使用正则表达式和 :s , 如果你可以 ggShift+vG~?

如果必须在脚本中执行,可以使用 :normal :

:normal ggVG~

好吧,如果你真的想去 :s , 你可以这样做

%s/\a/\=submatch(0) >= 'a' && submatch(0) <= 'z' ? toupper(submatch(0)) : tolower(submatch(0))/g

(我怀疑有一种方法可以更简洁地编写 submatch(0) >= 'a' && submatch(0) <= 'z',但我不知道,或者我根本没想到。romainl's answer 就是这样显示的。)

关于regex - 如何在 vim 中使用正则表达式来切换文件中所有字符的大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73245459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com