Skakanie do definicji klas, metod i zmiennych w vimie przy pomocy exuberant ctags

Dzięki exuberant ctags możemy skakać do definicji klas, metod, zmiennych i innych konstrukcji językowych w vimie. Narzędzie potrafi wygenerować plik z indeksem słów kluczowych (tagów) dla jednego spośród 41 wspieranych języków programowania. Indeks ten jest używany w edytorach typu vim do szybkiego odnajdywania powiązanych słów.

Instalacja

Instalacja nie powinna stanowić problemu na żadnym Linuksowym systemie. W Ubuntu pakiet exuberant ctags znajduje się w domyślnych repozytoriach. Do instalacji możemy użyć Centrum Oprogramowania Ubuntu lub otworzyć terminal i wpisać:

sudo aptitude install exuberant-ctags

Generowanie indeksu

Zanim będziemy mogli korzystać z dobrodziejstw ctagów musimy wygenerować plik z indeksem. Użyjemy do tego komendy ctags (to alias dla ctags-exuberant).

Aby wygenerować indeks najpierw musimy zmienić katalog roboczy na główny katalog projektu. Następnie rekrusywnie go indeksujemy:

cd ~/workspace/projects/sympal
ctags -R --languages=php .

Uwaga: 'man ctags' powie nam więcej o dostępnych opcjach.

Uwaga: Dawno temu Matthew Weier O'Phinney opisał jak używać ctags z PHP: exuberant ctags with PHP in vim. Użył kilku opcji, które nie wydają mi się już potrzebne. Prawdopodobnie wsparcie dla PHP zostało od tego czasu poprawione.

Podstawy

Podstawowe wykorzystanie tagów sprowadza się do dwóch komend:

Zauważmy, że komendy można poprzedzić liczbą. Spowoduje to jej wielokrotne wykonanie. Okazuje się to szczególnie przydatne jeśli jeden tag występuje wielokrotnie w naszych źródłach, a my chcemy skoczyć do konkretnego wystąpienia (2ctrl-]). Od czasu do czasu będziemy też potrzebowali wrócić do któregoś z rzędu tagu wstecz (4ctrl-t).

Możemy od razu otworzyć wybrany tag w vimie przy pomocy opcji -t:

vim -t sfGuardUser

Zaawansowane techniki

Niektóre z komend operujących na stosie tagów:

Niektóre z komend listy opasowań tagów:

Niektóre z komend wyszukiwania:

Uwaga: Wpisując w vimie :help tags-and-searches otrzymamy szczegółowy opis funkcjonalności oferowanych przez tagi.

Przydatne Strony

Wideo

Komentarze