VIM : 如何删除每一行中的特定字符范围

VIM : How to delete certain char range in every line

我正在尝试使用 VIM.

删除文件每一行中的某些字符范围

示例文件,

"2021-11-29T06:35:04.300-0500",01,342864
"2021-11-29T06:35:20.252-0500",54,332323
"2021-11-29T06:35:20.000-0500",63,513133

我想要这样的结果,

"2021-11-29T06:35:04",01,342864
"2021-11-29T06:35:20",54,332323
"2021-11-29T06:35:20",63,513133

我想删除整个文件中每一行中秒[.300-0500, .252-0500, .000-0500]之后的字符,即字符范围21-30。

我该怎么做?

我知道我可以使用下面的方法删除行首或行尾的字符范围,

:%s/^.\{0,5\}//
:%s/.\{1}$//

您可以使用:

:%s/\.\d\{3\}-\d\{4\}//

:%norm 20ld9l

向左移动 20 列(从第 1 列到第 21 列),然后从那里删除直到 21+9 = 30

您可以使用 \%Xv 来匹配(v虚拟)列 X,因此:

:%s/\%21v.*\%31v//

将删除列 2130 之间的字符。