Как название, если я находится в середине тела функции, а тело функции очень длинное, как я могу вернуться к началу тела функции.
Как перейти к началу текущего тела функции в Vim?
Ответ 1
Перейти к [count] предыдущему запуску метода
Работает для Java или аналогичных структурированных языков, а также для Python.
Ответ 2
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
}
Ответ 3
BTW, единственный относительно верный способ сделать это - изменить vim, см. этот пост
[править]
и это работает только с языками, поддерживаемыми буйными ctags. Поскольку мы не были сочтены подходящими для того, чтобы узнать, на каком языке вы хотите это сделать, возможно, что этот ответ также не будет правильным.
[/Править]
Ответ 4
Я потратил часы на создание этого шаблона: /^\s*\(\i\+\_[ \t\*]\+\)\+\i\+\_s*(\_[^)]*)\_s*{
, это хорошо работает для меня.
РЕДАКТИРОВАТЬ: лучший шаблон (версия 2): /\(\(if\|for\|while\|switch\|catch\)\_s*\)\@64<!(\_[^)]*)\_[^;{}()]*\zs{
Вы можете отобразить некоторые удобные привязки в вашем .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>
Ответ 5
Как только вы перейдете по блокам и параграфам в отсортированном коде, вы можете посмотреть, что вы можете сделать, когда находитесь в середине этих блоков, посмотрев эта часть vim doc's.
Такие вещи, как удаление блока, вставка перед блоком, добавление после блока и т.д.
НТН
Ответ 6
Поиск (назад) для ?^{
обычно должен быть там.