在Vim,整行上下移动

在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>

你可能感兴趣的:(在Vim,整行上下移动)