在notepad++中,我可以使用Ctrl + Shift + Up / Down来上下移动当前行。在Vim中有类似的命令吗?我翻遍了无数的指南,但一无所获。
如果没有,我如何将动作绑定到该键组合?
编辑:Mykola的答案适用于所有行,除了缓冲区的开头和结尾。向上移动第一行或向下移动一行会删除该行,当向上移动一行时,它最初会跳跃两个空格,就像棋子一样!谁能提供一些改进吗?
在notepad++中,我可以使用Ctrl + Shift + Up / Down来上下移动当前行。在Vim中有类似的命令吗?我翻遍了无数的指南,但一无所获。
如果没有,我如何将动作绑定到该键组合?
编辑:Mykola的答案适用于所有行,除了缓冲区的开头和结尾。向上移动第一行或向下移动一行会删除该行,当向上移动一行时,它最初会跳跃两个空格,就像棋子一样!谁能提供一些改进吗?
当前回答
对我来说,是ddkkp(而不是用大写P的ddkP,这也可以)。
其他回答
如果我想与上面的一行交换一行,我通常会这样做
ddkP
解释
Dd将删除该行并将其添加到默认寄存器中。 K向上移动一行(j向下移动一行) P会粘贴到当前行的上方
这是一个在我的机器上工作的解决方案 :运行VIM 8.1的MacBook Pro
这些命令不会删除缓冲区顶部或底部的行。
使用Alt-J和Alt-K输出的实际符号是一种变通方法,因为它们的键代码在我的环境中映射不正确。
把这个放在旧的.vimrc中,看看是否适合你。
" Maps Alt-J and Alt-K to macros for moving lines up and down
" Works for modes: Normal, Insert and Visual
nnoremap ∆ :m .+1<CR>==
nnoremap ˚ :m .-2<CR>==
inoremap ∆ <Esc>:m .+1<CR>==gi
inoremap ˚ <Esc>:m .-2<CR>==gi
vnoremap ∆ :m '>+1<CR>gv=gv
vnoremap ˚ :m '<-2<CR>gv=gv
我在.vimrc文件的末尾放了以下内容:
noremap H ddkkp
noremap N ddp
现在H和N分别上下移动电流线。
假设光标在您想要移动的行上。
上下移动: :m表示移动
:m +1 -向下移动一行
:m -2 -向上移动1行
(注意,你可以用任何数字替换+1,这取决于你想要向上或向下移动多少行,即+2将向下移动2行,-3将向上移动2行)
移动到特定的线上
:set number -显示数字线(更容易看到你移动到哪里)
:m 3 -在第三行之后移动行(将3替换为任何你想要的行)
移动多行:
V(即Shift-V),并上下移动courser在VIM中选择多条行
一旦选中,点击:并运行上面的命令,m +1等
正是你在这些插件中寻找的:
https://github.com/vim-scripts/upAndDown https://github.com/matze/vim-move