2012-03-08 17 views
5

W vimie, jak znaleźć wszystkie wystąpienia zmiennej w plikach w określonym katalogu?Jak znaleźć wszystkie wystąpienia zmiennej w Vim?

Wiem, że vimgrep działa czasami, ale szuka tylko tekstu i nie działa, jeśli inne klasy mają zmienne o tej samej nazwie, a ja chcę tylko zmienną pod określoną klasą.

Co należy zrobić? Czy zamiast tego powinienem otrzymać IDE?

+1

Tak, użyj IDE. Vim używa tylko podstawowych mechanizmów, takich jak wyrażeń regularnych lub wyszukiwania binarnego: nie rozumie twojego kodu tak jak robi to IDE. – romainl

+0

Z jakimi językami współpracujesz? Sugestie 'cscope' są dobre dla języków w stylu C, ale nie dla innych AFAIK. –

Odpowiedz

11

Dlaczego chcesz używać innego IDE, jeśli już je masz? Vim jest IDE, że jest konfigurowalny i wykorzystywane do różnych językach ..

Można użyć cscope do build a database swojego kodu. Ta baza danych

  • Umożliwia wyszukiwanie kod:
    • wszystkie odniesienia do symbolu
    • globalne definicje
    • funkcje wywoływane przez funkcję
    • funkcje Wywołanie funkcji
    • tekst smyczkową
    • wyrażenie regularne pat tern
    • plik
    • pliki zawierające pliki

Dalsze cechy Cscope:

  • Klątwy (ekran tekstu) oparty
  • Baza danych informacji jest wygenerowane dla szybszych wyszukiwań i późniejszych odniesień
  • Parser rozmyty obsługuje język C, ale jest na tyle elastyczny, że może być przydatny w C++ i Javie oraz jako uogólniona "baza danych grep" (użyj go do przeglądania dużych dokumentów tekstowych!)
  • Ma tryb wiersza poleceń dla włączenie do skryptów lub jako backend do GUI/frontend
  • Działa na wszystkich odmianach Uniksa plus większość kontrolowanych przez monopol systemów operacyjnych.

Po utworzeniu bazy danych, można browse through zwyczaje zmienne, funkcje, itd.


Edit (lekko OT):
kolejna fajna rzecz, która jest bardzo przydatny podczas pracy z Vima na kodzie jest taglist plugin, który wykorzystuje Ctags:

Wtyczka "Tag List" jest wtyczka do kodu źródłowego przeglądarki Vim i zapewnia przegląd struktury plików z kodem źródłowym i pozwala na sprawne przeglądanie plików kodu źródłowego dla różnych języków programowania .

+0

Znacznie lepiej niż vimgrep ... Próbuję ... – neuron

+0

+1 za cscope jest niesamowity. Zazwyczaj po prostu mam otwartą kartę terminalu dla pełnego czasu cscope. – alesplin

+0

Teraz, gdy spędziłem trochę czasu z cscope, wydaje mi się, że cscope nie rozróżnia zmiennych o tej samej nazwie, które należą do różnych klas. class_b :: var może zostać zwrócony, chociaż szukam tylko class_a :: var. Używam C++. Czy robię coś złego? – neuron

3

cscope krok po kroku przykład

Przejdź do katalogu głównym projektu i uruchom:

cscope -Rb 

To generuje plik cscope.out który zawiera przeanalizowane informacje. Generacja jest dość szybka, nawet w przypadku dużych projektów, takich jak jądro Linux.

Otwarte vim i uruchom:

:cs add cscope.out 
:cs find s my_func 

s jest pamięciowy dla symbol. Inne dostępne zapytania są również możliwe.

Interfejs Cscope (ouside Vima) posiada również zmienną zapytanie przypisania (podzbiór wystąpień symboli), które nie wydają Vim zaoferować (?)

Dodaje listę dzwoniących do listy quickfix, która możesz otworzyć:

:copen 

Przejdź do linii, która Cię interesuje i naciśnij Enter, aby tam przejść.

Zobacz także:

Powiązane problemy