我有一个文件,其中包含以下文本

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中使用regex一次切换文件中所有字符的大小写的正确模式是什么?

推荐答案

如果你能做ggShift+vG~?,为什么要 Select 正则表达式和:s.

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

:normal ggVG~

好吧,如果你真的想要:s美元,你可以这么做

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

(我怀疑有一种方法可以写得更简洁,但我不知道,或者我只是没有想到.romainl's answer表明情况是这样的.)

Linux相关问答推荐

为什么我在退出SD-Bus容器时出现错误?

sed + 从没有额外空格的文本中删除单词

sed:用空格替换

中的换行符

sed 根据文件中的条件进行多次替换

函数在 shell 脚本中抛出错误语法错误:} unexpected

是否可以使用 shell 脚本递归地创建文件夹?

关于 putenv() 和 setenv() 的问题

仅当当前行中存在字符串时才替换

如何获取 CPU 使用率

Linux批量转换:使用转换更改jpg的质量但保留其名称

将 CMake 项目导入 Eclipse CDT

*nix 系统上是否有与 COM 等效的功能?如果不是,那么 *nix 的可重用性方法是什么?

linux根据文件名模式搜索文件

可以通过 SSH 连接的所有用户的列表

Linux 上真的没有异步块 I/O 吗?

如何关闭被杀死的程序打开的套接字?

如何让我的 Golang Web 服务器在后台运行?

`os.symlink` 与 `ln -s`

查找和基本名称不能很好地播放

从文件中随机 Select 行而不用 Unix 啜饮它