Bardzo się staram nauczyć vima po używaniu TextMate przez ostatnie kilka lat.
Zacząłem zapisywać do pamięci część nawigacji w pliku, ale mam problemy z nawigacją między wieloma plikami.
W moim przepływie pracy dość często przerzucam się między kilkoma plikami (wystarczająco dużo plików, aby okna podzielonego okienka stały się zbyt małe).
Obecnie używam NERDTree, ale zagłębianie się w katalogi jest uciążliwe, a także ciągle używam CTRL+ W h/ CTRL+ W ldo przeskakiwania tam iz powrotem.
Myślę, że zrobiłbym lepiej z kartami, między którymi mogę łatwo się przełączać, ale może muszę użyć innego przepływu pracy.
Chciałbym również użyć skrótu „Idź do pliku ...”, takiego jak CMD+ Tw TextMate. Znalazłem, fuzzy_file_finder
ale wymaga to zbudowania vima z powiązaniami Ruby, co nie dotyczy instalacji natywnych, nad którymi pracowałem.
Chociaż mógłbym przebudować, głównym powodem, dla którego chcę przejść na vim, jest to, że mogę mieć jedno środowisko edytora, o którym wiem, że będzie z łatwością działało na dowolnej platformie.
Opcje, które są przytłaczające, są bardzo mile widziane!
źródło
Odpowiedzi:
Nie uważam, aby zagłębianie się w podkatalogi za pośrednictwem zwykłego starego
:e
byłoby tak uciążliwe, biorąc pod uwagę przyzwoitą konfigurację uzupełniania kart.Spójrz na
'wildmenu'
opcję, aby Vim pokazał listę uzupełnień (nazw plików) w linii modelu powyżej linii poleceń. Możesz zmienić'wildmode'
opcję, aby dalej skonfigurować rodzaj uzupełniania tabulatorami, które Vim zrobi.Osobiście używam
:set wildmode=full
.Mój przepływ pracy wygląda tak:
:cd
do katalogu najwyższego poziomu mojego projektu.Aby otworzyć plik
foo/bar/baz
:Najprostszy scenariusz: typ
:e f<tab>b<tab>b<tab><enter>
.Jeśli istnieje więcej niż jeden plik rozpoczynający się
b
w jednym z tych katalogów może trzeba zrobić<left>
lub<right>
czy inny<tab>
na klawiaturze, aby przejść pomiędzy nimi (lub wpisz kilka więcej listów do dwuznaczności).W najgorszym przypadku istnieją pliki i katalogi, które mają wspólną nazwę i musisz przejść do katalogu. W takim przypadku wpisz nazwę katalogu, a następnie wpisz,
*<tab>
aby przejść do szczegółów.:e
nowy plik w tym samym oknie.:b <tab>
do przełączania buforów, które są już otwarte w tle. Jeśli wpiszesz:b foo<tab>
, będzie pasować tylko do aktualnie otwartych plików, które pasująfoo
.Używam również tych mapowań, aby ułatwić otwieranie nowych okien i przeskakiwanie między nimi, ponieważ robię to często.
Otwarcie Vima, skonfigurowanie niektórych okien i otwarcie kilku plików zajmuje mi kilka sekund. Osobiście nigdy nie znalazłem żadnego ze skryptów do przeglądania plików stron trzecich za bardzo użyteczny.
źródło
Prostym sposobem przeglądania systemu plików jest polecenie:
Nie zmyślam :)
źródło
:Vex
jeśli chcesz podzielić ekran w pionie zamiast w poziomie:Vex
bardziej praktyczny, ale:Sex
właśnie sprawiłem, że mój dzień.:Se
działa też (to samo dlaVe, Te
wariantów). Nie ma co robić tego dziwnie :):Sex
,:Vex
,:Tex
I:Ex
są przydatne polecenia ex (ploring) pliki w systemie, jeśli chcesz korzystać z czegoś innego:e
(gdzie
S/V/T
są skrótami od Split / Vertical / Tab)źródło
Jeśli jeszcze ich nie znalazłeś, możesz sprawdzić:
Pamiętaj również, że możesz zmienić przypisanie skrótów klawiszowych w pliku .vimrc, aby były mniej kłopotliwe. Często używam podzielonych okien; Zauważyłem, że następujące kwestie znacznie ułatwiają radzenie sobie z nimi:
źródło
Czy znasz zakładki Vima? Nie jestem pewien, czy odnosiłeś się do zakładek Vima, czy też szukałeś TextMate. Nie jest jasne, jakiej wersji Vima używasz, ale ma zakładki od co najmniej 7.0 (które wydaje się być zainstalowane wszędzie, gdzie ostatnio spojrzę) i są niesamowite.
:tabe
otwiera nową kartę (skrót od „edycji karty”, czyli np.:tabe
do pustego:tabe path/to/file
pliku lub do otwierania pliku w nowej karcie), możesz poruszać się między sąsiednimi kartami za pomocągt
/gT
, a jest też kilka innych poleceń nawigacyjnych związanych z zakładkami, ponieważ można się spodziewać po Vimie (:help tabs
)Mój przepływ pracy dla dużych projektów zwykle obejmuje kilka kart, z których każda ma od 1 do 3 okien, w zależności od potrzebnego kontekstu. Działa to jeszcze lepiej, jeśli mam okno terminala o podwójnej szerokości, ponieważ mogę podzielić go w pionie
:vs
, więc pojedyncza karta może z łatwością pokazać mi 4 pliki naraz z dużą ilością miejsca na każdy.Ostatnia wskazówka: czasami używam polecenia „switch buffer” (
:sb <partial_buf_name>
), które jest trochę podobne do rozmytych wyników TM, ponieważ działa całkiem dobrze, ale tylko dla już otwartych buforów. Nadal świetnie sprawdza się, gdy mam otwartych kilkanaście lub więcej plików jednocześnie. (NB musiałem:set switchbuf=usetab
w moim vimrc, aby to działało na różnych kartach, ale kiedy to jest ustawione, jest świetne.)źródło
vim-titlecase
śruby z mapowaniami gt / gT, ale istnieje obejście .Jak dotąd uważam LustyExplorer za najlepszy.
Możesz otworzyć plik, wpisując tylko część jego nazwy.
Możesz otworzyć plik z katalogu bieżącego lub bieżącego pliku
pwd
albo z listy buforów.Jeśli otworzysz plik z listy buforów, nie musisz nawigować po drzewie katalogów, chociaż niestety w pozostałych dwóch trybach nadal musisz nawigować po drzewie. Dobrą rzeczą jest to, że nie musisz zaczynać od pierwszej postaci.
Jeśli masz:
a chcesz go otworzyć
dir_b/file.html
, możesz go znaleźć, wpisującb<Tab>h
źródło
Zaskakujące jest to, że
:find
polecenie nie zostało wymienione w żadnej z odpowiedzi. Zwykle pracuję z projektami rails, w których muszę zagłębić się w hierarchię katalogów. Więc dla plikuapplication.css
znajdującego się weapp/assets/stylesheets/
wszystkim, co muszę wpisać, to,:find applica
a następnie naciśnij klawisz Tab, aby autouzupełnianie i Enter, aby otworzyć.źródło
Sprawdź wtyczkę ctrlp jako alternatywę dla wtyczki Command-T . Jest lepsze niż to, ponieważ jest to „natywny” skrypt Vima i nie wymaga kompilacji Vima z ruby (lub inną obsługą), podczas gdy działa bardzo szybko i dyskretnie.
źródło
Jeśli żądany plik jest już załadowany do bufora (co jest prawdopodobne, jeśli regularnie przełączasz się między kilkoma plikami), możesz szybko przełączyć się do bufora za pomocą
:b[uffer]
polecenia.:b
może przyjąć numer bufora jako parametr lub (bardziej użytecznie) łańcuch, który pasuje do części ścieżki / nazwy pliku. Jeśli jest wiele dopasowań, możesz je przełączać za pomocą klawisza Tab.Jeśli chcesz podzielić okno i otworzyć bufor w nowym oknie, użyj
:sb name
Jeśli chcesz otworzyć bufor w nowej karcie, użyj
:tab b name
Możesz również użyć
:ls
polecenia, aby wyświetlić listę aktualnie załadowanych buforów.źródło
Używam tej funkcji do wyszukiwania plików w podkatalogach, chociaż jej nie napisałem. Pochodzi z wiki Vima :
Jedną rzeczą, którą lubię, jest obsługa symboli wieloznacznych (*). Jest również dobrze zachowany podczas wielu meczów.
źródło
Oprócz
wildmenu
odpowiedzi używam wtyczki BufExplorer i następujących mapowań do szybkiego przeskakiwania buforów:Lub możesz po prostu zastąpić eksplorator buforów
:ls
poleceniem, które w zasadzie wyświetla to samo.Ostatni mapuje,
Alt-=
aby pokazać eksplorator buforów.Nie używam tak często systemu Windows, ponieważ zazwyczaj mam tylko jedno lub dwa okna.
Zmodyfikowałem również tak,
statusline
aby zawierał numer bufora%2n
, dzięki czemu zawsze wiem, który bufor jest edytowany. Widzieć:h statusline
źródło
znasz aplikację MacVim? Jest VIM dopracowany dla OS X, a jedną z jego funkcji jest obsługa zakładek (CMD + T do otwierania nowej karty), ma szufladę itp ... (przeczytaj to: http://zerokspot.com/weblog/2008 / 08/03 / zamiana-macvim-as-textmate / )
Spróbuj!
Pozdrawiam Michał
źródło
NerdTree najlepiej nadaje się do nawigacji po plikach w vimie.
Poniższy link to dobre wprowadzenie do nerdtree.
http://www.catonmat.net/blog/vim-plugins-nerdtree-vim/
źródło
Oto coś dość trywialnego, które trzymam w moim
.vimrc
. Załaduje plik z dowolnego podkatalogu.Więc mogę po prostu powiedzieć:
: Er Main.java
i przeszuka podkatalogi, znajdź
Main.java
i załadować. Nie działa dobrze w przypadku wielu plików o tej samej nazwie, ale jest szybki i prosty.Innym narzędziem, którego używam, jest VTreeExplorer , które zapewnia oparte na drzewie okno plików / katalogów i nie wymaga żadnych specjalnych opcji kompilacji z VIM (tj. Jest to wtyczka waniliowa).
źródło
models.py
,views.py
itpMój przepływ pracy przy znajdowaniu plików to wildmenu, autocwd i
:e
.Odpowiednie części w
.vimrc
:I jak z tego korzystać:
To daje wszystkie pliki w bieżącym katalogu, które zaczynają się od myf. Możesz także
<Tab>
przez nie. Użyj powrotu, aby otworzyć :)^D
zawsze da ci wszystkie dopasowania. Ponieważ autocmd zawsze przechodzi do folderu bieżącego pliku, z którym łatwo się pracuje. Jeśli jesteś w środkufoo/bar.py
i chcesz iść dofoo/baz.py
siebie, tylko zrób to:e baz.py
i tam jesteś. Działa to również z buforami (:b foo^D
wyświetla wszystkie bufory zaczynające się od foo)źródło