2013-03-15 13 views
6

Potrzebuję pomocy przy ustawianiu ctags, jsctags i tagbar, dzięki czemu mogę korzystać z edytowalnego środowiska Javascript. Mam wszystko zainstalowane, ale nie mogłem się zorientować, jak działają ctags i jsctags, więc nie wiem, jak poprawnie skonfigurować. Zrobiłem sporo Google, ale informacje są dość zepsute i brakuje spójności. Wystąpił błąd podobny do tego wpisu, ctags and tagbar configuration are out of sync. Jestem na górskim licie OS X i iterm2.ctags, jsctags/doctorjs, Tagbar krok po kroku

Każda pomoc zostanie bardzo doceniona. Instrukcje krok po kroku byłyby doskonałe.

Thx.

Odpowiedz

5

Po pierwsze, musisz zrozumieć, że jsctags i ctags prawdopodobnie nigdy nie będą w stanie zsynchronizować. Nawet jeśli masz tylko prostą funkcję, oba programy mogą wyprowadzać nieco inne informacje. Dlatego zaleca się używanie jednego z nich, ale nie obu.

Po drugie, AFAIK, TagBar nie musi być skonfigurowany do używania jsctags zamiast ctags. Jeśli robisz JavaScript, po prostu ustawisz na jsctags, jeśli jest dostępny. TagBar nie powinien narzekać, jeśli masz działające jsctagi.

trzecie dla własnych funkcjonalności związanych TAG (:tag, :tselect, <C-]>, etc.), Vim opiera się wyłącznie na obecności jednego lub więcej fizycznych tags plików. To, czy pliki są generowane przez ctags, jsctags czy whatevertags, nie jest problemem, o ile są generowane poprawnie.

A teraz dochodzimy do czwartego punktu, w którym naprawdę jest ból: ani Tagbar, ani jego starszy kuzyn TagList nie używają fizycznego pliku tags. Pobierają ctags lub jsctags bezpośrednio, nawet nie próbując użyć lub zaktualizować żadnego istniejącego pliku tags. Z tego powodu oraz faktu, że TagBar zajmuje się tylko bieżącym buforem, twój fizyczny plik tags (a tym samym funkcje związane z tagami Vima) i TagBar są prawie niezawinione. Nawet jeśli używasz tego samego indeksera.

Więc ... radzę Ci używać albo ctags lub jsctags i zapomnieć wszystko o synchronizowaniu tagi związane TagBar i Vim-tych rzeczy ponieważ obie rzeczy są całkowicie oddzielone: ​​

  • Zastosowanie TagBar do zrozumieć/nawigować w bieżącym buforze.

  • Użyj funkcji związanych z tagami Vima do poruszania się po projekcie.


losowe myśli ...

  • dla VIM, aby znaleźć plik (ów) tags łatwo, należy umieścić ten wiersz w swoim ~/.vimrc:

    set tags=./tags,tags;/ 
    

    ./tags pomocą "poszukaj pliku tags w katalogu bieżącego pliku", tags oznacza "poszukaj pliku tags w katalogu roboczym", ;/ oznacza "patrz w górę iw górę, aż dotrzesz do /".

  • The TagBar wiki mówi o błędzie w jsctags, upewnij się, że go nie interesuje.

  • jsctags jest lepszy niż ctags podczas pisania szalonego "nowoczesnego" JavaScriptu z dużą ilością wywołań zwrotnych i samoczynnego wykonywania funkcji. Jeśli twój JavaScript jest bardziej tradycyjny, ctagi mogą wystarczyć.

+0

romainl, dzięki za wyjaśnienie. Myślę, że mam jsctags działający, ale tagbar pokazywał tylko zmienne, metody, zamknięcia, itp. Bez podziału/hierarchii, jak drzewo obiektów lub odwoływanie się do rzeczy z zewnętrznych bibliotek (wymagają (..)). Czy tak powinno być? Może ctags może zrobić lepszą robotę? Największą wartością byłby kursor na zmiennej i przejście do pliku źródłowego, który ją definiuje. Mam nadzieję, że mam sens. – 1001b

+0

Powinieneś mieć hierarchiczny widok zakresu. Jsctags powinien wykonać lepszą pracę na scopingu niż ctags, więc to, co opisujesz, brzmi jak ten błąd w jsctagach wymienionych w wiki TagBar. Obawiam się, że powinieneś wypróbować tracker problemów na Githubie, by uzyskać bardziej skupioną pomoc. Jeśli masz aktualny plik 'tags', naciśnięcie' 'z kursorem na zmiennej powinno przeskoczyć do definicji. Zobacz [to] (https://github.com/romainl/dotvim/blob/master/vimrc#L174), aby uzyskać więcej komendy korzystającej z JS. – romainl

+0

Thx ponownie. Linia wymiany jest bardzo pomocna. Jak normalnie porządkujesz plik znaczników (lub jak wywołujesz polecenie jsctags)? Skomplikowany charakter struktury zależności w JS sprawia, że ​​rzeczy są mniej intuicyjne. Np. Moduły podstawowe znajdują się w węźle, ale pliki projektu znajdują się na innej ścieżce ... Btw, zakres znaczników przydarza mi się ... Proponowana poprawka, zgodnie z wiki, nie działa, ponieważ wymaga downgrade node.js! Jakiekolwiek inne obejście? Jeszcze raz. – 1001b

Powiązane problemy