2012-08-05 18 views
9

Mamy ogromny, stary, okropny kod, który sprawia, że ​​znalezienie rzeczy jest praktycznie niemożliwe, kiedy jej potrzebujesz. Pracujemy nad ulepszeniem tego, oczywiście ... ale często robię masywne rekursywne grepy, aby przeszukać zawartość plików, aby znaleźć miejsce, w którym są używane.Pełne indeksowanie wiersza polecenia?

Czy istnieje narzędzie, za pomocą którego można utworzyć pełnotekstowy indeks plików tekstowych w katalogu, a następnie wykonać zapytanie za pomocą wiersza polecenia?

Preferuj coś, co można uruchomić w przestrzeni użytkownika i nie potrzebuje demona. Na naszym serwerze deweloperskim jest wielu użytkowników, więc chcę czegoś, co przeszukuję przez moje wystąpienie kodu.

+0

Dowolny określony język lub środowisko? –

+3

Czy próbowałeś ['ack'] (http://betterthangrep.com)?Zwykle uważam, że jest wystarczająco szybki, bez konieczności posiadania pełnego indeksu tekstowego, nawet w przypadku naprawdę dużych projektów. –

+0

@GregHewgill woo, to wygląda interesująco. Dobra nazwa domeny też :) –

Odpowiedz

5

Jestem wielkim fanem "gid" (aka "id-utils"):

użycia jest prosty:

  1. Install id- utils z twoim ulubionym managerem pakietów (np. "sudo apt-get install" lub "yum")

  2. „cd” do głównego katalogu źródłowego i run „mkid”

  3. Można używać go z linii poleceń

  4. Można również używać go z „vim” lub dowolnej liczby innych narzędzi.

+0

PS: "ctags" to kolejna dobra rzecz do obejrzenia: http://ctags.sourceforge.net/, http://www.thegeekstuff.com/2009/04/ctags-taglist-vi -vim-editor-as-sourece-code-browser / – paulsm4

2

Russ Cox napisał a series of articles describing how the Google Code Search algorithm worked. Reimplementuje uproszczoną wersję algorytmu w a set of command-line tools that can do fast regex searches over a local codebase.

Alternatywą jest użycie czegoś takiego jak ctags, aby utworzyć indeks identyfikatorów używanych w kodzie. Wiele edytorów (w tym Vim, których używam) może użyć tego pliku znaczników, aby szybko przejść do definicji identyfikatorów.

1
cd /path/to/project 
ctags -R 

ten utworzy plik tags że Vim użyje, a następnie:

vim -t someFunctionName 

otworzy vim w definicji funkcji!

Istnieje również kilka skrótów klawiaturowych, które upraszczają życie.

CRTL+] will jump to the definition of the method under the cursor 
CRTL+t will go back 
0

Mam podobną potrzebę pracy nad dużym projektem C++. Po sprawdzeniu niektórych narzędzi okazało się, że najlepszym wyborem jest id-utils, ponieważ bardzo szybko tworzy on indeks i wzorce wyszukiwania.

podstawie id-utils, zrobiłem narzędzia i vim wtyczki wiersza polecenia, aby naprawić moje potrzeby:

https://github.com/fcamel/gj

nadzieję, że to pomaga.

Powiązane problemy