在vim中向上或向下移动一行的命令(或快捷方式)是什么?我当前的工作流程是提取(复制)该行,然后删除该行,然后粘贴(粘贴)该行。
在vim中向上或向下移动一行的命令(或快捷方式)是什么?我当前的工作流程是提取(复制)该行,然后删除该行,然后粘贴(粘贴)该行。
Answers:
首先,您不需要拉动和删除;后者还将删除的内容放入(默认或指定的)寄存器。因此,ddp
/ ddkP
是将一行上下移动的常见命令。
另外,您可以使用:move
命令,即:move +1
/ :move -2
;。这不会破坏寄存器,您也可以移动整个范围。您可以轻松定义键映射以缩短此时间。
如果你不介意的插件(和附加舒适感往往与他们),既添教皇的未受损伤的插件和我LineJuggler插件提供]e
/ [e
映射到移动线(和几个;添的,适用于各种用途,矿山集中处理行)。
最简单的是::m+
或作为Ingo建议的:m-2
缩写:move
。
或者使用可视模式(V)通过剪切线(d/ x),然后将其移动到粘贴之前的正确位置(因此,总结为/ ),然后将其粘贴(光标p下方,光标P上方的Vxp- Vdp)。
在可视模式下移动多:m '>+1
行时,则必须使用(向下移动一行)或:m '<-2
(向上移动一行)。
这是有用的映射示例(Shift+ ↑/ Shift+↓):
nnoremap <S-Up> :m-2<CR>
nnoremap <S-Down> :m+<CR>
inoremap <S-Up> <Esc>:m-2<CR>
inoremap <S-Down> <Esc>:m+<CR>
这是vim wikia的一些建议:
nnoremap <A-j> :m .+1<CR>==
nnoremap <A-k> :m .-2<CR>==
inoremap <A-j> <Esc>:m .+1<CR>==gi
inoremap <A-k> <Esc>:m .-2<CR>==gi
vnoremap <A-j> :m '>+1<CR>gv=gv
vnoremap <A-k> :m '<-2<CR>gv=gv
在普通模式或插入模式下,按Alt-j向下移动当前行,或按Alt-k向上移动当前行。
在视觉上选择了一个线段之后(例如,通过按V然后向下移动光标),按Alt-j向下移动整个块,或按Alt-k向上移动该块。
也可以看看:
ddkP
向下移动更容易:ddp
。