在notepad++中,我可以使用Ctrl + Shift + Up / Down来上下移动当前行。在Vim中有类似的命令吗?我翻遍了无数的指南,但一无所获。
如果没有,我如何将动作绑定到该键组合?
编辑:Mykola的答案适用于所有行,除了缓冲区的开头和结尾。向上移动第一行或向下移动一行会删除该行,当向上移动一行时,它最初会跳跃两个空格,就像棋子一样!谁能提供一些改进吗?
在notepad++中,我可以使用Ctrl + Shift + Up / Down来上下移动当前行。在Vim中有类似的命令吗?我翻遍了无数的指南,但一无所获。
如果没有,我如何将动作绑定到该键组合?
编辑:Mykola的答案适用于所有行,除了缓冲区的开头和结尾。向上移动第一行或向下移动一行会删除该行,当向上移动一行时,它最初会跳跃两个空格,就像棋子一样!谁能提供一些改进吗?
当前回答
最简单的方法和vscode一样。将下面的行添加到.vimrc
"Ctrl+Shift+up move line above"
nmap <C-S-Up> :m -2<CR>
"Ctrl+Shift+down move line below
nmap <C-S-Down> :m +1<CR>
其他回答
假设光标在您想要移动的行上。
上下移动: :m表示移动
:m +1 -向下移动一行
:m -2 -向上移动1行
(注意,你可以用任何数字替换+1,这取决于你想要向上或向下移动多少行,即+2将向下移动2行,-3将向上移动2行)
移动到特定的线上
:set number -显示数字线(更容易看到你移动到哪里)
:m 3 -在第三行之后移动行(将3替换为任何你想要的行)
移动多行:
V(即Shift-V),并上下移动courser在VIM中选择多条行
一旦选中,点击:并运行上面的命令,m +1等
可以使用命令:
:g/^/move 0
参考:https://vi.stackexchange.com/questions/2105/how-to-reverse-the-order-of-lines
一个简单的解决方案是在你的.vimrc中加入这些行:
nmap <C-UP> :m-2<CR>
nmap <C-DOWN> :m+1<CR>
如果你想在匹配特定搜索的多行上执行此操作:
向上::g/您的查询/正常ddp或:g/您的查询/ m -1 向下:g/您的查询/正常ddp或:g/您的查询/ m +1
你的光标可以在任何一行上。行号被打开以方便地识别行位置。 第一种情况:假设我在第7行,想把第3行移到第9行,把它移到下一页。
:3m 9完成移动。
第二种情况:我仍然在第7行,但现在我想移动第9行到第3行,把它带到页面上。
:9m 2完成移动。注意,目的地使用2而不是3。
注意:光标会移动到移动目标位置。如果我需要返回第7行,只需使用:7
第三种情况:移动一系列的行。比如,从9到12,第九行到第三行
:9,12米2完成移动。 图片:一个终端游戏围栏与Vim打开移动实验