为什么在 vim 中 move (m) 中的第一个操作数是从 1 开始的,而最后一个操作数是从 0 开始的?

为什么在 vim 中 move (m) 中的第一个操作数是从 1 开始的,而最后一个操作数是从 0 开始的?

给定以下文件

1
2
3
4
5

当我说:1m3

该文件看起来像这样

2
3
1
4
5

但当我说它:3m1看起来像这样

1
3
2
4
5

我以为3应该在1之前。为什么会这样呢?

答案1

正如 Stéphane Chazelas 在使用 vim 帮助时指出的:h :m那样:

:[range]m[ove] {address}                        *:m* *:mo* *:move* *E134*
                    Move the lines given by [range] to below the line
                    given by {address}.

因此通过移动1号线以下第 3 行结果如问题中所述。但如果想将第 3 行移至第一行,则必须将其移动以下线0

答案2

命令如:copy:moveput 目标以下由 给出的线{address}。您可以使用地址0移动到第一行。一些命令(如:put)还支持反转之前/之后 via:put!

相关内容