在notepad++中,我可以使用Ctrl + Shift + Up / Down来上下移动当前行。在Vim中有类似的命令吗?我翻遍了无数的指南,但一无所获。
如果没有,我如何将动作绑定到该键组合?
编辑:Mykola的答案适用于所有行,除了缓冲区的开头和结尾。向上移动第一行或向下移动一行会删除该行,当向上移动一行时,它最初会跳跃两个空格,就像棋子一样!谁能提供一些改进吗?
在notepad++中,我可以使用Ctrl + Shift + Up / Down来上下移动当前行。在Vim中有类似的命令吗?我翻遍了无数的指南,但一无所获。
如果没有,我如何将动作绑定到该键组合?
编辑:Mykola的答案适用于所有行,除了缓冲区的开头和结尾。向上移动第一行或向下移动一行会删除该行,当向上移动一行时,它最初会跳跃两个空格,就像棋子一样!谁能提供一些改进吗?
当前回答
你的光标可以在任何一行上。行号被打开以方便地识别行位置。 第一种情况:假设我在第7行,想把第3行移到第9行,把它移到下一页。
:3m 9完成移动。
第二种情况:我仍然在第7行,但现在我想移动第9行到第3行,把它带到页面上。
:9m 2完成移动。注意,目的地使用2而不是3。
注意:光标会移动到移动目标位置。如果我需要返回第7行,只需使用:7
第三种情况:移动一系列的行。比如,从9到12,第九行到第三行
:9,12米2完成移动。 图片:一个终端游戏围栏与Vim打开移动实验
其他回答
向上移动一行:ddkP
向下移动一行:ddp
将以下内容添加到~/。Vimrc文件(确保你没有映射n,m)
nmap n :m +1<CR>
nmap m :m -2<CR>
现在按n键将向下移动一行,m键将向上移动一行。
最简单的方法和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>
如果我想与上面的一行交换一行,我通常会这样做
ddkP
解释
Dd将删除该行并将其添加到默认寄存器中。 K向上移动一行(j向下移动一行) P会粘贴到当前行的上方
我在.vimrc文件的末尾放了以下内容:
noremap H ddkkp
noremap N ddp
现在H和N分别上下移动电流线。