如何在vim中匹配十进制字母和空白?

时间:2009-09-21 03:41:43

标签: regex vim

我需要改变

1  A
2  B
3  C
4  D

A
B
C
D

表示每行开头的十进制字母,以及后面的一个或多个空格应删除。

我只熟悉Perl中的Reqex,所以我尝试使用:%s / ^ \ d \ s + //来解决我的问题,但它不起作用。所以你们中的任何人都可以告诉我如何使用vim完成工作?

感谢。

8 个答案:

答案 0 :(得分:7)

Vim需要+的反斜杠,所以试试

:%s/^\d\s\+//

答案 1 :(得分:3)

一种方法是使用带有search-and-replace命令的global命令:

:g/^[0-9]  */s//

它搜索序列:

  • ^
  • 的开头
  • 一个数字[0-9]
  • 空格<space>
  • 零个或多个空格<space>*

然后将其替换为(s//)

虽然你可以单独使用search-and-replace命令来做类似的事情,但学习全局命令很有用,因为你可以用所选的行做各种奇妙的事情(不只是搜索和替换)

答案 2 :(得分:2)

使用以下

:%s/^[0-9]  *//

答案 3 :(得分:1)

你应该使用

:%s/^\d\s\+//

作为一个文本编辑器,当匹配模式而不是perl时,vim倾向于将更多字符字面上视为 text 。在默认模式下,+与文字+匹配。

当然,这是可配置的。尝试

:%s/\v^\d\s+//

并阅读帮助文件。

:help magic

答案 4 :(得分:1)

您也可以使用可视阻止模式(Ctrl + V),然后向下和向右移动以突出显示一个字符块,并使用“x”删除它们。根据线的布局,实际上可能更快(更容易记住)。

答案 5 :(得分:1)

如果您仍想使用Perl,您可以:

:%!perl -pe 's/^\d\s+//'

Vim会将文件写入临时文件,在其上运行给定的Perl脚本,然后将文件重新加载到编辑缓冲区中。

答案 6 :(得分:0)

逃离加号:

:%s/^\d\s\+//

答案 7 :(得分:0)

如果它在列中,您可以按:

进入列视觉模式
esc ctrl+q

然后您可以突出显示要删除的内容