Vim: переход к началу/концу следующего метода
Есть ли встроенная функция в Vim, которая позволяет переместить курсор в начало/конец следующего метода? Я уже знаю о [[
, ]]
, []
и ][
, но они не режут работу, потому что они работают только на фигурных скобках, которые находятся в нулевом столбце. Следовательно, они мало полезны, например, для навигации по коду С++. Есть ли такая команда, которая уже встроена в Vim? Если нет, вы бы порекомендовали плагин, который его реализует?
Спасибо за вашу помощь!
Изменить: [{
и }]
не будут работать все время, потому что вы должны быть в блоке с {}
(а не в какой-то более глубокой области внутри этого блока), чтобы вы закончили справа {
или }
.
Редактировать 2: Здесь список кодов, для которых [m
и друзья не работают.
namespace foo {
#define define_foo \
template <class T> \
struct foo_traits<X> \
{ \
using foo = X; \
};
template <class T>
struct foo_traits;
define_bar(T*, T*, T*);
template <class T>
struct baz;
template <class T>
struct baz<T&>
{
static T* apply(T& t) { return &t; }
};
template <class T>
inline T a(T t) { return t; }
}
Ответы
Ответ 1
Vim имеет [m
/]m
встроенный "для Java или подобный структурированный язык".
Я написал собственные версии, которые обрабатывают функции Vim, VBScript и пакетные файлы. Все они поддерживаются моим плагином CountJump, который может использоваться для записи пользовательских функций перехода на основе регулярных выражений.
Ответ 2
Похож на дубликат: Vim [m motion with С#
Вы можете, например, попробовать этот грязный трюк: 9]}
.
Который просто прыгает с 9-го }
из текущего местоположения (если вы не слишком вложен, должен работать...)