Перейти к середине блока кода

Используя Vim, я пытаюсь переместить курсор в середину блока кода, но я не могу понять, как это сделать:

//cursor is for instance here.

{
//or here

//some code
// .... **** move cursor here ****
//some more code

}

Последняя идея состоит в том, чтобы иметь ярлык, который сохраняет текущую позицию, перемещает курсор в середину блока кода, устанавливает текущую строку в середину экрана (с ярлыком «zz»), а затем возвращается к сохраненная позиция.

Я бы предпочел встроенную функцию vim, но плагин тоже работает.

РЕДАКТИРОВАТЬ: Это для C ++, и поэтому я хочу, чтобы это было в скобках {}.

1

Решение

Я дал (быстрый и грязный) ход:

function! Middleize()

" use ]M to jump to either the end of the current method if we are in it
" or the start of the next method if we are above the method
normal! ]M

" we record the current line number
let first_line = line('.')

" we go to the other end of the method
normal! %

" we record the current line number
let second_line = line('.')

" we started either from the top or from the bottom of the method
" so we have to take that into account when calculating the number
" of the line we want to jump to
if first_line < second_line
let middle_line = first_line + ((second_line - first_line) / 2)
else
let middle_line = ((first_line - second_line) / 2) + second_line
endif

" let's go!
execute "normal! " . middle_line . "Gzz"endfunction

nnoremap <F5> :call Middleize()<CR>
4

Другие решения

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

Например:

начальное состояние

<Leader><Leader>w (дефолт) — ‘движение слов

движение слов включено

g

курсор в середине

Затем, чтобы вернуться назад, вы должны сделать то же самое в обратном направлении (в данном случае, <Leader><Leader>b g,

Это не устанавливает текущую строку в середину экрана, хотя вы можете :set scrolloff=9999 чтобы середина экрана следовала за курсором.

1

Это не даст вам именно то, что вы хотите, но на экране появится текст функции (при условии, что она не слишком длинная).

  1. м — установить отметку в текущей позиции курсора.
  2. Неоднократно нажмите } (переходите к абзацу), пока не увидите нужный код.
  3. ` — вернитесь к установленной вами отметке.

«Абзац» в терминах vim — это группа последовательных непустых строк. Это хорошее приближение для блока кода. Также обратите внимание, что вы можете использовать любую букву для команды пометки, так что может быть одновременно до 52 из них активными.

0
По вопросам рекламы [email protected]