如何在Vim中删除字母?含单行混数字与字母的处理方案
Vim: 删除所有字母 & 删除单行内所有字母的解决方案
Got two common Vim editing tasks to tackle? Let's walk through each with simple, effective commands that fit right into your workflow.
1. 删除整个文件中的所有字母
要一次性清除文件里的所有大小写字母,最快捷的方式是使用Vim的全局替换命令。在普通模式下按下:进入命令行模式,然后输入:
:%s/[a-zA-Z]//g
命令解释:
%:表示作用于整个文件的所有行s:启动替换(substitute)操作[a-zA-Z]:匹配所有大写和小写的英文字母//:将匹配到的内容替换为空(也就是删除)g:全局(global)替换,每行内的所有匹配项都会被处理,而不是只替换第一个
如果你的文件里包含非英文字母(比如é、ñ、ü这类带 accents 的字符),可以用Vim的内置字符类来匹配所有字母:
:%s/[[:alpha:]]//g
[:alpha:]是POSIX标准的字符类,会匹配任何语言的字母字符,适用性更广。
2. 删除当前行内的所有字母
如果只需要处理当前光标所在的单行,只需要把全局替换的范围从整个文件改成当前行即可。在普通模式下进入命令行模式,输入:
:.s/[a-zA-Z]//g
命令解释:
.:表示作用于当前光标所在的行- 后面的
s/[a-zA-Z]//g和上面的逻辑完全一致,只针对当前行删除所有字母
如果你想更直观地操作,也可以先进入可视化行模式(按下V)选中目标行,然后输入:s/[a-zA-Z]//g,Vim会自动把范围补全为<,'>,效果和上面的命令一样。
举个例子:如果当前行是Hello123World456!,执行命令后会变成123456!。
内容的提问来源于stack exchange,提问作者user869304
相关产品推荐
相关产品推荐

