Подтвердить что ты не робот

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; }

}
4b9b3361

Ответ 1

Vim имеет [m/]m встроенный "для Java или подобный структурированный язык".

Я написал собственные версии, которые обрабатывают функции Vim, VBScript и пакетные файлы. Все они поддерживаются моим плагином CountJump, который может использоваться для записи пользовательских функций перехода на основе регулярных выражений.

Ответ 2

Похож на дубликат: Vim [m motion with С#

Вы можете, например, попробовать этот грязный трюк: 9]}. Который просто прыгает с 9-го } из текущего местоположения (если вы не слишком вложен, должен работать...)