在notepad++中,我可以使用Ctrl + Shift + Up / Down来上下移动当前行。在Vim中有类似的命令吗?我翻遍了无数的指南,但一无所获。

如果没有,我如何将动作绑定到该键组合?

编辑:Mykola的答案适用于所有行,除了缓冲区的开头和结尾。向上移动第一行或向下移动一行会删除该行,当向上移动一行时,它最初会跳跃两个空格,就像棋子一样!谁能提供一些改进吗?


当前回答

可以使用命令:

:g/^/move 0

参考:https://vi.stackexchange.com/questions/2105/how-to-reverse-the-order-of-lines

其他回答

如果你想在匹配特定搜索的多行上执行此操作:

向上::g/您的查询/正常ddp或:g/您的查询/ m -1 向下:g/您的查询/正常ddp或:g/您的查询/ m +1

假设光标在您想要移动的行上。

上下移动: :m表示移动

:m +1 -向下移动一行

:m -2 -向上移动1行

(注意,你可以用任何数字替换+1,这取决于你想要向上或向下移动多少行,即+2将向下移动2行,-3将向上移动2行)

移动到特定的线上

:set number -显示数字线(更容易看到你移动到哪里)

:m 3 -在第三行之后移动行(将3替换为任何你想要的行)

移动多行:

V(即Shift-V),并上下移动courser在VIM中选择多条行

一旦选中,点击:并运行上面的命令,m +1等

如果我想与上面的一行交换一行,我通常会这样做

ddkP

解释

Dd将删除该行并将其添加到默认寄存器中。 K向上移动一行(j向下移动一行) P会粘贴到当前行的上方

对我来说,是ddkkp(而不是用大写P的ddkP,这也可以)。

向上移动一行:ddkP

向下移动一行:ddp