Vim中快速插入序列

Vim编辑文本时经常会遇到需要插入一个序列(比如从10到20),或者与此类似的相关序列问题,原来没有仔细想过这个问题,总是一个个的敲。时间久了觉得这样实在太麻烦,Vim这么强大的编辑器一定要更好的方法可以解决这个问题。于时花时间思考了一下,总结了以下几种快速处理序列的方法。

例如,在第5行文本后面插入一个序列10到20(每行一个).

方法1:

将光标移到第5行,在命令模式下输入

11o<ESC>  (插入11个空行)

:let i=10|g/\%>5l\%<17l/s/^/\=i/|let i+=1  (\%>5l\%<17l 意思是从第6行到16行)

这样就会得到我们想要的结果(从第6行到16行):

10
11
12
13
14
15
16
17
18
19
20

如果你想认内容在一行上,那么就将光标移到第6后,然后在命令模式下输入 1J即可。

另外一种方法 是利用宏录制与 <c-a> :

在第6行插入10,然后在命令模式下依次输入:

qq

yyp

<c-a> (ctrl+a)

q

9@q

利用这两种方法,我们可以方便生成需要的序列,以及快速处理其它一些与序列相关的问题。

另外,如果你是在Linux系统下,有一种更为方便的方法,就是在Vim中直接调用Linux的seq命令

:r !seq 10 20 (多行)

:r !echo {10..20} (单行)

Vim真的挺强大的。