如何使用VIM删除第一个字符串结尾后的所有字符串?

时间:2015-10-05 21:21:37

标签: regex vim

我有一个包含5174行的文件。以下是这些行的显示方式:

JAMES          1.664  1.664      1
JOHN           1.642  3.305      2
ROBERT         1.576  4.881      3
MICHAEL        1.321  6.202      4
MARY           1.319  7.521      5
WILLIAM        1.230  8.750      6
DAVID          1.185  9.934      7
RICHARD        0.854 10.788      8
CHARLES        0.765 11.552      9
JOSEPH         0.705 12.257     10
THOMAS         0.692 12.948     11
PATRICIA       0.539 13.486     12
CHRISTOPHER    0.519 14.005     13
LINDA          0.518 14.523     14
BARBARA        0.490 15.013     15

我在VIM中使用:

:s/^\s*//g

这不起作用。如何在每行的第一个字符后立即删除所有字符?

3 个答案:

答案 0 :(得分:3)

为这只猫皮肤涂抹的方法很多......

替换:

:%s/\w\+\zs.*

:normal

:%norm! f D

答案 1 :(得分:0)

你可以在vim中使用它:

:%s/\([^[:blank:]]\+\).*/\1/

\([^[:blank:]]\+\)将匹配并在第一个空白区域和后方引用\1之前对文本进行分组,以替换替换。

答案 2 :(得分:0)

您已经有了解决方案,但宏也可以这样做:

q q 电子 d Ĵ 0 q

  • q q 开始录制q注册表中的宏
  • e l 在单词结尾后输入一个字符
  • D 删除行尾
  • j 0 转到底线的开头
  • q 停止录制宏

然后你可以在普通模式下5174@q重播宏5174次并删除所有行。