f1,f2,f3,f4,f5,,,,
f1,f2,f3,f4,f5,,,,
f1,f2,f3,f4,f5,,,,
f1,f2,f3,f4,f5,,,,
假设fN是除,
之外的某些字符序列。
如何删除前3个字段?
到目前为止,我已尝试%s/^.*,.*,.*,//
,但它会移除整行。
答案 0 :(得分:4)
假设您的光标位于第一行第一列。字段也有相同的宽度(如示例所示)
你可以按下面的按键顺序(6次击键):
<Ctrl-V>G3f,x
如果字段长度不同,您可以:
使用q
记录宏:
qq0v3f,xjq
然后,重播宏,例如99次:
99@q
或在命令行中执行:
%s/\v^([^,]*,){3}//
答案 1 :(得分:2)
您可以使用cut
,使用分隔符选项d,
(将,
设置为分隔符),然后选择您想要的-f4-
(从4到4的所有字段)结束......)
答案 2 :(得分:2)
问题是*
修饰符 greedy ,即它匹配它可以获得的所有字符。
将值限制为除逗号分隔符以外的任何字符:[^,]
:
:%s/^\([^,]*,\)\{3}//
或使用非贪婪变种.\{-}
:
:%s/^\(.\{-},\)\{3}//
对于逗号分隔值(CSV)文件处理,您可能还对提供:DeleteColumn
命令的csv.vim plugin感兴趣。