我需要改变
1 A
2 B
3 C
4 D
到
A
B
C
D
表示每行开头的十进制字母,以及后面的一个或多个空格应删除。
我只熟悉Perl中的Reqex,所以我尝试使用:%s / ^ \ d \ s + //来解决我的问题,但它不起作用。所以你们中的任何人都可以告诉我如何使用vim完成工作?
感谢。
答案 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
然后您可以突出显示要删除的内容