Vimで、行全体を上下に移動

6205 ワード

Vimで、行全体を上下に移動
以下の内容をあなたのものに置きます.vimrcで宿題を終わらせる

noremap <c-s-up> :call feedkeys( line('.')==1? '' : 'ddkP' )<CR>
noremap <c-s-down> ddp


线条消失看起来像一个 Vim Bug 。 我放置了一个 hack 来避免它。 可能还有更精确的解决方案。

更新

使用Vim组合有很多无法解释的困难。 这些是直线缺失和额外的跨线。

下面是可以放在. vimrc 或者 ~/.vim/plugin/swap_lines.vim 中的脚本解决方案


function! s:swap_lines(n1, n2)
 let line1 = getline(a:n1)
 let line2 = getline(a:n2)
 call setline(a:n1, line2)
 call setline(a:n2, line1)
endfunction

function! s:swap_up()
 let n = line('.')
 if n == 1
 return
 endif

 call s:swap_lines(n, n - 1)
 exec n - 1
endfunction

function! s:swap_down()
 let n = line('.')
 if n == line('$')
 return
 endif

 call s:swap_lines(n, n + 1)
 exec n + 1
endfunction

noremap  <c-s-up> :call <SID>swap_up()<CR>
noremap  <c-s-down> :call <SID>swap_down()<CR>