2012-08-26 17 views
17

Czy w Vimie istnieje natywna funkcja, która pozwala przesunąć kursor na początek/koniec następnej metody? Wiem już o [[, ]], [] i ][, ale te nie powodują przerw w pracy, ponieważ działają tylko w nawiasach klamrowych znajdujących się w kolumnie zero. W związku z tym są mało przydatne w, powiedzmy, w nawigacji kodu C++. Czy istnieje takie polecenie, które jest już wbudowane w Vima? Jeśli nie, czy poleciłbyś wtyczkę, która ją zaimplementuje?Vim: Idź do początku/końca następnej metody

Dzięki za pomoc!

Edit: [{ i }] nie będzie działać cały czas, bo trzeba być w bloku z {} (a nie w jakimś głębszym zakresie w ramach tego bloku), aby skończyć z prawej { lub } potem.

Edytuj 2: Oto lista kodowa, dla której [m i znajomi nie działają.

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

} 
+4

W Javie użyłbym IDE zaprojektowanego do programowania Javy. Podobnie dla C++. –

+20

@PeterLawrey to bardzo pomocne wiedzieć ... – jalf

+2

Czy próbowałeś '[{' and ']}'? –

Odpowiedz

34

Vim ma [m/]m zbudowany w "Java lub podobnego języka strukturyzowanego".

Napisałem niestandardowe wersje obsługujące między innymi: Vim functions, VBScript i batch files. Wszystkie one są zasilane moim CountJump plugin, które mogą być używane do pisania niestandardowych funkcji skoku w oparciu o wyrażenia regularne.

+0

Myślę, że obsługa C++ będzie wymagać czegoś potężniejszego niż wyrażeń regularnych, ponieważ nawet '[m','] m'' , '[M','] M' nie działa dla mojego kodu C++. –

+1

Jeśli szukasz rozwiązania w 100%, potrzebujesz pełnego parsera C++; ale zwykle "z reguły poprawne" rozwiązanie można często osiągnąć za pomocą wyrażeń regularnych; cp. Podświetlanie składni Vima. –

+0

+1 za dodawanie skryptów vim. –

2

Wygląda duplikat: Vim [m motion with c#

Można na przykład spróbować do tego brudnego trick: 9]}. Który przeskakuje do 9-tej } z bieżącej lokalizacji (jeśli nie jesteś zbyt zagnieżdżony, powinien działać ...)

Powiązane problemy