Vim 公式在每行中只留下两个第一个单词

Mar*_*ras 0 regex vim replace

如何在 Vim 的每一行中只留下两个第一个单词(删除所有其余单词)?

例如

AA  AA  subst:pl:acc:m3+subst:pl:acc:n2
aa  ad acta brev:npun
Run Code Online (Sandbox Code Playgroud)

进入

AA  AA
aa  ad
Run Code Online (Sandbox Code Playgroud)

rom*_*inl 5

你可以使用我心爱的:normal命令:

:%norm EElD
Run Code Online (Sandbox Code Playgroud)

或AWK:

:%!awk '{print $1, $2}'
Run Code Online (Sandbox Code Playgroud)

或替换,如果真实文件看起来不像提供的示例:

:%s/\S\+\s\+\S\+\zs.*
Run Code Online (Sandbox Code Playgroud)

  • @FredNurk,`:normal` 是一个了不起的工具,但它并不适用于所有情况。Vim 是关于上下文的。对于手头的任务,某些方法会比其他方法更有效。它非常适合*如OP*所描述的问题,但不适用于*真实*问题。为工作找到合适的工具是一项随着时间的推移而产生的技能,但这在很大程度上取决于一个人向他人和自己描述问题的能力。 (2认同)