我有一个文本文件,我想删除每行中除第一个单词外的所有单词,但我不知道如何执行此操作。删除除VIM中第一列以外的所有内容
所以,如果我有:
one two three
four five
six
我想留在:
one
four
six
有什么想法?
我有一个文本文件,我想删除每行中除第一个单词外的所有单词,但我不知道如何执行此操作。删除除VIM中第一列以外的所有内容
所以,如果我有:
one two three
four five
six
我想留在:
one
four
six
有什么想法?
如果行不空格开始,你可以用一个空字符串替换' .*'
(相匹配的第一个字之后的所有内容):
:%s/ .*//g
或者,您可以使用宏做到这一点。 在正常模式下键入qa
开始在寄存器a中记录一个宏。 然后键入0elDj
删除当前行上的所有内容,但删除第一个单词,然后转到下一行。 再次键入q
以结束录制宏。
现在你可以用@a
在任何行上触发宏。 运行:%norm! @a
将宏应用于缓冲区中的每一行。
这样你就可以重复任何你想要的复杂操作,而不仅仅是替换。 我爱宏:)
编辑:请注意,它不工作时,行有严格少于2个字符。出于这个原因,这通常不是解决这个问题的最好方法。
更强大的解决方案是通过一个非常擅长这些操作的程序对它进行过滤:awk
。
说你有这样的内容:
one two three
four five
six
运行:%!awk '{print $1}'
,你会得到:
one
four
six
awk
的默认字段分隔符是空格,但你可以改变它,无论你取决于你需要什么。
绝对是正确的工具。为我工作得很好。 – yantaq
谢谢。有用。 :) – Casteurr