我们如何删除所有数字和 . (点)在使用 vim 的文件中的所有行中?例如,我们有一个文件有以下内容。
afsdfsd 0.98096764
afsdfd 0.98196765
0.98096764
afsadfsd 0.98096764
adfsd 0.98096764
aadfsd 0.98096425
0.98096425
afsadfsd 0.98096761
` 想知道我们如何在 vim 中删除所有数字和数字内的点(在我的文件中,点仅在数字内退出)
afsdfsd
afsdfd
afsadfsd
adfsd
aadfsd
afsadfsd
此基本正则表达式 (BRE) 搜索和替换操作删除一个多位数字,可选地后跟一个点和一个或多个数字。
vim
也将 PCRE 理解\d
为 的同义词[[:digits:]]
,因此您可以通过以下方式缩短一点:顺便说一句,
:help perl-patterns
见vim
。这不仅会更短,而且也适用于
0-9
不是数字或不是唯一数字的语言环境。\v
您可以通过在正则表达式中使用来启用 vim非常神奇的正则表达式模式,使其更短(并且 IMO 更具可读性) :另请参见
:help magic
。vim
顺便说一句,更简单的正则表达式(如
:%s/[0-9.]\+//g
)也将删除用作标点符号的句点(例如,在句子的末尾,或省略号...
)。你可以用正则表达式来做到这一点,但我认为使用它
tr
来删除你想要的字符范围更简单:冒号启动“命令模式”。意思是“
%
整个缓冲区”;意思是!
“通过下面的 shell 命令过滤指定的范围(整个缓冲区)(即在命令的标准输入上输入它,并在 Vim 中用该命令的标准输出替换它)。”您可以将两个替换命令与一个
|
符号链接在一起。因此,您可以先删除所有数字 (\d
),然后删除所有句点 (\.
)::%s/\d//g | %s/\.//g
您还可以在单个替换命令中将管道用作“或”运算符:
:%s/\d\|\.//g