如何轻松移动线?


Answers:


52

首先,您不需要拉动删除;后者还将删除的内容放入(默认或指定的)寄存器。因此,ddp/ ddkP是将一行上下移动的常见命令。

另外,您可以使用:move命令,即:move +1/ :move -2;。这不会破坏寄存器,您也可以移动整个范围。您可以轻松定义键映射以缩短此时间。

如果你不介意的插件(和附加舒适感往往与他们),既添教皇的未受损伤的插件和我LineJuggler插件提供]e/ [e映射到移动线(和几个;添的,适用于各种用途,矿山集中处理行)。


36

最简单的是::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>

这类似于Sublime Text(Win / OSX)。

这是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向上移动该块。

也可以看看:


2
+1为Vim Wikia链接。在那儿学到了一些东西。
2015年

不知道为什么,但是它们在Gvim中工作得很好,但是在终端vim中却不能按预期工作。(似乎是tmux的问题)
CodyChan

11

如果我想与上面的一行交换一行,我通常会执行以下操作

ddkP

说明

  • dd将删除该行并将其添加到默认寄存器。
  • k将向上移动一条线(j将向下移动一条线)
  • P将粘贴在当前行上方

3
要向下移动当前行,请使用ddp
Qinjie

4

FWIW,这是我多年来使用的东西。它会在正常模式或可视模式下上下移动当前行,同时自动调整压痕。

nnoremap ,<Up>   :<C-u>silent! move-2<CR>==
nnoremap ,<Down> :<C-u>silent! move+<CR>==
xnoremap ,<Up>   :<C-u>silent! '<,'>move-2<CR>gv=gv
xnoremap ,<Down> :<C-u>silent! '<,'>move'>+<CR>gv=gv
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.