如何删除Vim中每行的第一个单词?
每行上的模式怎么样?
答案 0 :(得分:30)
:救援正常:
:%norm dw
它基本上重放了参数,就像你在普通('非编辑')模式下输入它们一样。
来自:help:
:norm [al] [!] {commands}
执行普通模式命令{命令}。
这使得可以执行键入的正常模式命令 命令行。 {commands}执行就像输入一样。
答案 1 :(得分:28)
在这里以真正的vi风格去追求神秘:
1Gq10dwjq100000@1
兰迪在评论中修正了这一点,以便处理超过100000行:
ggqqdwj@qq@q
对于那些以Vim开始的人,这可以分解为:
gg - Go to first line
qq - Record a macro into register 'q'
dwj@q - The macro:
dw - delete word at cursor
j - go down one line
@q - run the macro in register 'q'
q - Stop recording the macro
@q - Execute the macro in register 'q'
本质上,宏是递归的 - 它删除一个单词,向下移动一行,然后再次调用自身,重复每一行直到文件结束。最后的'@q'是在每一行上关闭宏所需的初始(手动)调用。
答案 2 :(得分:19)
我会使用以下内容:
:%s/^\w+\s+//
正则表达式将匹配从行首开始的一个或多个“单词”字符,后跟至少一个空白字符。它将删除单词和任何后续空格。如果一行只能包含一个单词 - 并且您仍希望将其删除 - 您可以使用替换来匹配空格或行尾。
:%s/^\w+(\s+|$)//
答案 3 :(得分:4)
这个怎么样?
:%!cut -s -d'' - f2 -
答案 4 :(得分:3)
第一个单词(其中单词定义为无空格)
:%s/^\s*[^ ]* //g
删除模式:
:%s/< insert pattern here >//g
答案 5 :(得分:1)
:%s,^[^ ]*,,
从行的开头匹配任何内容,但不是空格并替换为none。
答案 6 :(得分:0)
尽管这是一个古老的问题,但是如果其他人正在寻求这样做,则可以使用可视块。
- 按ctrl + v
- 选择所有要编辑的行
- 现在使用箭头键选择整个单词
- 按'x'
这将删除所有行中的第一个单词。此方法特别方便编辑日志文件