vim bindkey-snipplet для перемещения блока кода дырки - PullRequest
1 голос
/ 24 сентября 2011

Я только что сделал небольшой фрагмент кода для своих keybindings.vim, чтобы сдвинуть блок кода дыры вокруг. Он работает в основном так же, как я делаю это старомодным ручным способом (в обычном режиме: {V} для выбора блока отверстия в визуальном режиме, затем> и <для перемещения по отступу, и: m + и: m-2 для двигаться вниз или вверх). </p>

Проблема, которую я получаю, состоит в том, что она работает только для перемещения через отступ (по горизонтали), но для вертикального перемещения она не работает. Я просто не могу найти причину, так как, выполняя точно такую ​​же последовательность вручную (как я привык), она работает как шарм.

Прежде всего: я протестировал снипплет на Vim 7.2 (на Linux) и Vim 7.3 (на MacOS). Второе: я знаю, если я положу:

vnoremap < <gv

... и a:

vnoremap > >gv

... в моих раскладках клавиш я смогу перемещать выбранные визуально блоки без потери визуального выделения ... несмотря на это, я бы хотел, чтобы это работало, поэтому мне не нужно брать уход за визуальным отбором с помощью ручного ESC {jV} k

Кто-нибудь может сказать мне, что я делаю не так? Я благодарю вас всех заранее! Привет! * * 1013

"============================================================================
"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
"============================================================================

1 Ответ

0 голосов
/ 25 сентября 2011

Изменение команд :move, используемых в этих сопоставлениях для перемещения абзаца вниз от :m+ до :m'>+.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...