正则表达式删除第一个之后的所有单词

时间:2013-12-12 03:02:03

标签: regex vim

在一个文本文件中,对于每一行,删除从一个空格开始的字符 结束了。

例如:在包含两行的文件中:

hello world
foo  good good

处理后,文件看起来像

hello    
foo

我试过^\+\s,但似乎只处理行尾的空格

2 个答案:

答案 0 :(得分:7)

你不只是想要

:%s/\s.*//

它匹配第一个空格之后的所有内容。然后删除匹配的匹配。

答案 1 :(得分:3)

为了更好的衡量,一个简单的解决方案不涉及正则表达式(或实际上很多想法):

:%norm f D

说明:

  • :{range}normal {command}{command}指定的行上执行正常模式{range}
  • 用作范围,%表示“当前缓冲区中的每一行”。
  • f<space>是一个水平动作,它跳到该行的下一个<space>
  • D删除从光标到行尾的所有内容。

正则表达式很吸引人,但是当正常模式命令能够以更直观的方式完成工作时,可能需要花费太多时间才能找到正确的正则表达式模式。