对于看起来像这样的文件:

   2  AD,42.546245,1.601554,Andorra,376
   3  AE,23.424076,53.847818,United Arab Emirates,971
   4  AF,33.93911,67.709953,Afghanistan,93
   5  AG,17.060816,-61.796428,Antigua and Barbuda,1


我试图删除前10行的前导空格和数字,所以我最终得到

AD,42.546245,1.601554,Andorra,376
AE,23.424076,53.847818,United Arab Emirates,971
AF,33.93911,67.709953,Afghanistan,93
AG,17.060816,-61.796428,Antigua and Barbuda,1


为什么“删除两个单词” :d2w仅适用于单行而不适用于范围:1,10d2w

注意:

通过使用:1,10s/.\{8\}//固定格式解决了问题本身,因此,这更多的是了解如何通过q​​4312079q使用范围

评论

另外::1,10s / \ v ^(\ s | \ d)* /(在前10行的开头删除任意数量的空格或数字)

#1 楼

您可以使用普通命令执行此操作:

:1,10normal d2w


这是因为d运算符不接受范围,而仅接受运动:

:h d

["x]d{motion}           Delete text that {motion} moves over [into register x].


或者,您也可以在可视模式下选择文本,然后执行以下操作:

:'<,'>normal d2w


评论


很抱歉显式询问::normal将允许执行该命令,就像我在使用光标导航时输入该命令一样?

–Fiximan
15年8月19日在12:35



:normal允许您执行在普通模式下输入的命令(使用hjkl导航光标时)。见::h:正常

– nobe4
15年8月19日在12:37

范围之后位于正常前面的结肠是多余的。

–FDinoff
15年8月20日在1:24