2011-09-23 2 views
1

방금 ​​keybindings.vim에 약간의 스 니펫을 작성하여 코드 블록을 이동 시켰습니다. 이것은 구식 수동 방식 (일반 모드에서는 시각 모드에서 구멍 블록을 선택하기 위해 {V}를 누른 다음 들여 쓰기를 이동하려면> ​​및 <과 동일한 방식으로 작동합니다.) : m + 및 : m-2 ~ 아래로 또는 위로 이동).vim bindkey-snipplet을 사용하여 코드 구멍 블록을 이동하십시오.

내가 얻는 문제는 들여 쓰기를 통해 (수평으로) 이동하는 것이지만 수직 이동을 위해서는 작동하지 않는다는 것입니다. 나는 정확히 같은 시퀀스를 수동으로 (예전처럼)했듯이, 그 이유를 찾을 수 없다. 그것은 매력처럼 작동한다.

우선 : Vim 7.2 (Linux) 및 Vim 7.3 (MacOS)에서 스 니펫을 테스트했습니다. 둘째 :

vnoremap < <gv 

... 그리고 : 나는를 넣으면 알 수

vnoremap > >gv 

... 내 키맵에, 내가 잃어버린없이 영상 선택된 블록을 이동 할 수 있습니다 시각적 선택 ... 이것에도 불구하고 수동으로 ESC로 시각적 선택을 처리 할 필요가 없도록이 작업을하고 싶습니다. {kV} k

아무도 말해 줄 수 없습니까? 내가 잘못하고있어? 미리 감사드립니다. 감사합니다. :m'>+까지 :m+에서 단락을 이동하는 매핑에 사용

"============================================================================ 
"Ctrl + Shift + > [normal or insert mode] - move entire block around 
"============================================================================ 
nnoremap <silent> <C-S-Right> :let savecur=getpos(".")<CR>{V}><CR> 
      \:call setpos('.', savecur)<CR>4l 
inoremap <silent> <C-S-Right> <Esc>:let savecur=getpos(".")<CR>{V}><CR> 
      \:call setpos('.', savecur)<CR>5li 
nnoremap <silent> <C-S-Left> :let savecur=getpos(".")<CR>{V}<<CR> 
      \:call setpos('.', savecur)<CR>4h 
inoremap <silent> <C-S-Left> <Esc>:let savecur=getpos(".")<CR>{V}<<CR> 
      \:call setpos('.', savecur)<CR>3hi 
nnoremap <silent> <C-S-Up> :let savecur=getpos(".")<CR>{V}:m-2<CR> 
      \:call setpos('.', savecur)<CR>k 
inoremap <silent> <C-S-Up> <Esc>:let savecur=getpos(".")<CR>{V}:m-2<CR> 
      \:call setpos('.', savecur)<CR>ki 
nnoremap <silent> <C-S-Down> :let savecur=getpos(".")<CR>{V}:m+<CR> 
      \:call setpos('.', savecur)<CR>j 
inoremap <silent> <C-S-Down> <Esc>:let savecur=getpos(".")<CR>{V}:m+<CR> 
      \:call setpos('.', savecur)<CR>ji 
"============================================================================ 

답변

0

변경 :move 명령.

+0

@marcogomez :이 방법이 도움이되지 않으면 알려주세요. –

관련 문제