Jak sprawić, aby vim pokazywał bieżącą klasę i metodę, którą edytuję

15

Czy ktoś wie, czy jest to możliwe (lub wie o istniejącym skrypcie vim lub wtyczce), które mogą utworzyć „pasek stanu”, który pokazuje nazwę bieżącej klasy i metody (lub funkcji), którą edytuję?

Wyobrażam sobie, że połączy się on z parserem składni dla typu pliku bieżącego bufora i wyświetli ścieżkę nawigacyjną, aby pokazać ci, co aktualnie edytujesz. Nie znam wystarczająco dobrze vimscript, aby coś więcej zasugerować, ale jeśli nie ma już żadnych dobrych rozwiązań, mogę zacząć hackować jeden, więc sugestie, od czego zacząć, są również mile widziane!

dcrosta
źródło

Odpowiedzi:

7

Ten skrypt umieszcza nazwę bieżącej funkcji na pasku tytułu i / lub linii statusu. Wykorzystuje ctags do wygenerowania listy znaczników dla bieżącego pliku i zakłada, że ​​znacznik poprzedzający położenie kursora jest nazwą bieżącej funkcji. Ponieważ używa tagów, można go dostosować do pracy z różnymi językami, nawet strukturalnymi plikami tekstowymi. Działa dobrze w praktyce, ale ma pewne ograniczenia. Jeśli nic więcej, może dać ci punkt wyjścia do hakowania.

garyjohn
źródło
6

Działa to, jeśli zainstalujesz wtyczki linii lotniczej i tagbar . Te dwie wtyczki integrują się automatycznie, a bieżąca funkcja zostanie wyświetlona na pasku stanu. Jeśli chcesz mieć pełną hierarchię obiektów (np. Metoda + klasa), musisz to skonfigurować w swoim .vimrc:

let g:airline#extensions#tagbar#flags = 'f'  " show full tag hierarchy

Może być konieczne skonfigurowanie pliku tagów dla paska tagów, aby zidentyfikować bieżącą pozycję kodu, jeśli jeszcze nie używasz tagów. Jeśli jeszcze o tym nie wiesz, oto krótkie wprowadzenie do tagów .

Karl Bartel
źródło