2010-08-12 12 views
6

Jaki jest najprostszy sposób, aby "przeskoczyć do pliku gdzieś w moim drzewie źródłowym według nazwy"? Na przykład, jeśli pracuję z "libfoo", który zawiera libfoo/foo/foo.py, chciałbym móc przeskoczyć do foo.py z dowolnego miejsca w obrębie libfoo/** [0].Vim: Proste polecenie "jump to file"?

Być może jakiś sposób to zrobić z plikiem znaczników?

[0]: czyli libfoo/ i jego podkatalogów.

Odpowiedz

6

Wyjazd command-t, FuzzyFinder lub FuzzyFinder_Textmate

Osobiście uważam, że komenda-t ma najlepszy UI, ale FuF_Textmate jest najlepsze dla szybko się we właściwym miejscu w bardzo dużych projektów (dlatego używam go po wypróbowaniu wszystkich 3)

Należy pamiętać, że fuzzyfinder_textmate nie jest utrzymywany przez oryginalnego autora, więc może być konieczne przeszukanie karty sieciowej gh, aby ustalić, kto ma najbardziej aktualną gałąź. również zauważyć, że instalacja jest trudna.

+0

używam FuzzyFinder_Textmate już za znacznikiem skoków ... Ale to trochę irytujące użyć 'file' ponieważ, jeśli jestem w' libfoo/bar/baz/', a potem mam musiałem wpisać '\ f ../../../**/ foo.py'. –

+0

Być może jest jakiś sposób na skonfigurowanie go tak, aby domyślnie używał jakiegoś katalogu jako katalogu głównego? –

+0

o ile mi wiadomo, fuzzyfinder_textmate robi tylko nazwy plików, i zawsze zaczyna się w miejscu, które otworzyłeś vim (co może być w rzeczywistości czasem bólem). może używasz fuzzyfinder? –

14

Dodaj ** jest do was oddzielonych przecinkami vim path zmienna (nie ścieżki systemu), a jeśli jesteś w jakiejś nadrzędnej reż wykorzystania projektu:

:find foo.py 
+1

głosował na ciebie, ponieważ znalezienie jest zdecydowanie łatwiejsze niż instalacja i konfiguracja wtyczki. –

+0

Hm, to nie wydaje się robić tego, co chcę ... Jeśli moje CWD to 'libfoo /', 'find foo.py' nie działa. Być może ': find' nie jest rekurencyjne? –

+0

Co oznacza: ustawić ścieżkę powiedzieć? Mój to 'ścieżka =., ** ,,', która moim zdaniem jest domyślna. To zdecydowanie się dla mnie powtarza. : znajdź hasło w/find/etc/passwd. –

2

Można użyć zakończenie kartę vim za nazw plików w połączenie z rozszerzeniem katalogu rekursywnego **.

np. wpisz: :e libfoo/**/foo.py i naciśnij TAB. Spowoduje to wyszukiwanie z katalogu libfoo w celu znalezienia pasującego pliku. Jeśli jest więcej niż jeden mecz, możesz je przełączać za pomocą klawisza TAB. Po znalezieniu żądanego naciśnij enter, aby zakończyć polecenie i edytować plik.

Więcej informacji na temat ** dopasowania do :h starstar. Wymaga wersji Vima skompilowanej z opcją + path_extra.

Jeśli już edytowałeś ten plik, możesz również przeszukiwać bufory w poszukiwaniu częściowych dopasowań nazw za pomocą polecenia :b name. na przykład :b foo.py<TAB> rozwinie się do nazwy bufora, która zawiera "foo.py" w dowolnym miejscu. N.B. pasuje do całej ścieżki, więc :b foo<TAB> pasowałoby do wszystkich buforów z plikami z katalogu libfoo.

-1
map <S-F12> :execute "!start explorer \"" . expand("%:p:h") . "\""<CR> 

uruchamia się okno eksploratora w katalogu pliku używasz

+0

Przepraszam, nie jestem pewien, czy widzę, jak to ma związek z pytaniem ... –

0

to sprawdzić:

https://github.com/zhchang/quick_file

unikalne cechy: 1. nie trzeba wiedzieć, gdzie dokładnie jest, o ile jest w jednym z podkatalogów. 2. nie musisz pamiętać pełnej nazwy, fragmenty zrobią 3. przejdzie do najbardziej płytkiego meczu, ale z większą liczbą fragmentów dostarczonej ścieżki będzie pasować głębiej.

1

ctrlp.vim

Pełna ścieżka rozmyta plik, bufor, mru, tag, ... finder dla Vima.

  • Napisane w czystym Vimscript dla MacVim, gVim i Vim 7.0+.
  • Pełna obsługa wyrażeń regularnych Vima jako wzorców wyszukiwania.
  • Wbudowane monitorowanie ostatnio używanych (MRU) plików.
  • Wbudowana wyszukiwarka root projektu.
  • Otwórz wiele plików naraz.
  • Twórz nowe pliki i katalogi.
  • Rozszerzalny.

Można go znaleźć pod numerem https://github.com/ctrlpvim/ctrlp.vim.

0

ctags --extra=f . tworzy tagi z tej samej nazwie co pliki wskazujące na pierwszej linii:

ctags -R --extra=f . 

Następnie można po prostu zrobić:

:tag file_na 

i zakładka zakończyć dala.

wspomniano na: Vim and ctags: tag filenames

Powiązane problemy