Как перейти к началу текущей функции тела в Vim? - PullRequest
41 голосов
/ 21 января 2010

В качестве заголовка, если я нахожусь в середине тела функции и тело функции очень длинное, как я могу вернуться к началу тела функции.

Ответы [ 6 ]

53 голосов
/ 21 января 2010

[m

Перейти к [count] предыдущему запуску метода

Работает для Java или аналогичных структурированных языков, а также для Python.

17 голосов

язык C [[

Если ваш код C выполнен в неегипетском стиле:

[[

[m работает только при наличии{} для функции, например class { method(){} } для Java / C ++.

И это хорошая ставка, которая подходит как для египетских, так и для неегипетских скобок:

?^[^ \t#]

Примеры:

void egypt() {
#define DONTCARE 1
    int indented code = 1;
}

void tpyge()
{
#define DONTCARE 1
    int indented code = 1
} 
1 голос
/ 30 мая 2018

Я потратил часы, чтобы сделать этот шаблон: /^\s*\(\i\+\_[ \t\*]\+\)\+\i\+\_s*(\_[^)]*)\_s*{, у меня это хорошо работает.

РЕДАКТИРОВАТЬ : лучший шаблон (версия 2): /\(\(if\|for\|while\|switch\|catch\)\_s*\)\@64<!(\_[^)]*)\_[^;{}()]*\zs{

см. Эффект здесь: enter image description here

вы можете отобразить несколько удобных привязок в вашем .vimrc, например:

" jump to the previous function
nnoremap <silent> [f :call search('^\s*\(\i\+\_[ \t\*]\+\)\+\i\+\_s*(\_[^)]*)\_s*{', "bw")<CR>
" jump to the next function
nnoremap <silent> ]f :call search('^\s*\(\i\+\_[ \t\*]\+\)\+\i\+\_s*(\_[^)]*)\_s*{', "w")<CR>

РЕДАКТИРОВАТЬ : лучший шаблон (версия 2):

" jump to the previous function
nnoremap <silent> [f :call
\ search('\(\(if\\|for\\|while\\|switch\\|catch\)\_s*\)\@64<!(\_[^)]*)\_[^;{}()]*\zs{', "bw")<CR>
" jump to the next function
nnoremap <silent> ]f :call
\ search('\(\(if\\|for\\|while\\|switch\\|catch\)\_s*\)\@64<!(\_[^)]*)\_[^;{}()]*\zs{', "w")<CR>
1 голос
/ 21 января 2010

Кстати, единственный относительно надежный способ сделать это - изменить vim, см. в этом посте

[править]
и это работает только с языками, поддерживаемыми exuberant ctags. Поскольку мы не были в состоянии знать, на каком языке вы хотите это сделать, возможно, этот ответ также не будет правильным.
[/ Править]

0 голосов
/ 21 января 2010

После того, как вы перемещаетесь по блокам и абзацам в отсортированном коде, вы можете посмотреть, что вы можете сделать, когда находитесь в середине этих блоков, посмотрев эту часть vim Дока.

Такие вещи, как удаление блока, вставка перед блоком, добавление после блока и т. Д.

НТН

0 голосов
/ 21 января 2010

Поиск (10000 * в обратном направлении) обычно приводит вас туда.

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