Kiedy otworzę nową kartę z inną ścieżką niż poprzedni plik w VIM, NERDTree pozostanie tą samą hierarchią katalogów co poprzedni plik.
Czy istnieje skrót synchronizacji, aby zmienić bieżący katalog główny na katalog nowego otwartego pliku?
vim
gvim
nerdtree
vim-plugins
Jichao
źródło
źródło
<Leader>f
<leader>
?rzuć znakiem% na końcu jak szef
:NERDTree %
mam to w moim .vimrc, mapuje Ctrl+, oaby przełączyć nerdtree w katalogu bieżącego bufora:
map <C-o> :NERDTreeToggle %<CR>
źródło
Znalazłem obie istniejące odpowiedzi edukacyjne i z powodzeniem połączyłem obie tak, że zachowanie jest bardziej takie, jak wiele osób mogłoby oczekiwać od IDE: Kliknij otwarte okno / bufor i podświetl ten plik w drzewie NERDTree. Umieszczam to w moim ~ / .vimrc:
autocmd BufEnter * if &modifiable | NERDTreeFind | wincmd p | endif
Co to robi:
autocmd BufEnter
- działa za każdym razem, gdy skupiasz się na buforze (w tym okno NERDTree)if &modifiable
- kiedy klikniesz okno NERDTree, nie rób nic więcej (okna NERDTree nie można modyfikować)wincmd p
- NERDTreeFind pozostawia kursor skupiony na NERDTree; spowoduje to powrót do okna, na którym pierwotnie się skupiłeśZauważ, że to nie zadziała na żadnym innym buforze, który nie jest modyfikowalny - ale ogólnie jest to dobra rzecz; w przeciwnym razie (na przykład) za każdym razem, gdy wejdziesz
:help
w vima, NERDTree znajdzie i skoncentruje katalog, w którym przechowywane są pliki pomocy - prawdopodobnie nie jest to coś, co chcesz zrobić.To jedno-liniowe rozwiązanie na początku działało dla mnie świetnie, ale wkrótce odkryłem, że powoduje aktywację NERDTree za każdym razem, gdy otwieram plik - w rezultacie uniemożliwia NERDTree kiedykolwiek zamknięcie! Jeśli nie chcesz korzystać z NERDTree w pełnym wymiarze godzin, umieść to w swoim .vimrc:
źródło
isNTFocused()
? Czy&modifiable
czek nie obejmuje tej skrzynki?Function name must start with a capital or "s:": rc:isNTOpen()
Czy używasz rozszerzeń zakresów wtyczek?.vimrc
w którym napisałem ten kod. Nie pamiętam, dlaczego użyłem tej opcjirc:
, ale myślę, że unikanie konfliktów nazw z innymi funkcjami było kwestią przestrzeni nazw. O ile pamiętam, nie korzystałem z żadnej wtyczki specjalnie z tym związanej. Musisz przestudiować dokumenty lub po prostu spróbować je pominąć i sprawdzić, czy coś się zepsuło. Ale myślę, że jedna z nazw funkcji była w konflikcie z czymś w NerdTree lub gdzie indziej. Nikt inny nie pytał przez prawie 5 lat, więc mam wrażenie, że to coś prostego. :)Natknąłem się na to pytanie wczoraj, po kilku godzinach kopania, wysłałem żądanie ściągnięcia do repozytorium nerdtro scrooloose, wprowadzając
NERDTreeCWD
polecenie zmieniające katalog główny drzewa NERD na bieżący katalog roboczy (Aktualizacja 2012-11-12: PR został włączony do nadrzędny master, powinien być użyteczny w zaktualizowanej wersji). Dzięki tej zmianie to pytanie można po prostu rozwiązać za pomocą następującego kodu.W porównaniu z podejściem @ shinzui i @ Lambart
NERDTreeFind
, robi to dokładnie to, o co pytano. UżycieNERDTreeFind
zmieni pozycję przewijania drzewa nerdt, a wynik nie zawsze będzie taki sam (jeśli CWD znajduje się w katalogu głównym drzewa NERD, po prostu rozszerza węzeł, zamiast tego zmieniając się w niego).W porównaniu z odpowiedzią @Yaser Sulaiman, to rozwiązanie ma zawsze otwarte okno drzewa NERD i można je łatwo kodować. Jeśli okno drzewa NERD zostało już otwarte, użycie
NERDTreeToggle
będzie wymagało dwukrotnego uruchomienia (najpierw zamknij istniejące, a następnie otwórz je ponownie), niestety drugie otwarcie pominie całe przetwarzanie cwd.źródło
Zachowuje się jak,
:NERDTreeToggle
ale pokaże aktualnie otwarty plik w NERDTree. Jeśli jeszcze nie otworzyłeś pliku (tj. Właśnie wpisałeśvim
w linii poleceń) NERDTree pokazuje/home
.Umieść to w swoim .vimrc:
źródło
Stosuję oba rozwiązania z Zmień bieżący katalog za pomocą NERDTree : użyj,
cd
aby ustawić katalog roboczy NERDTree na bieżący katalog iC
ustawić węzeł główny NERDTree na bieżący katalogźródło
Myślę, że ta wtyczka jest tym, czego chcesz https://github.com/jistr/vim-nerdtree-tabs
źródło
Znalazłem odpowiedź opublikowaną przez Matthiasa, która jest świetną odpowiedzią na jeden problem, nie działa dobrze w kilku przypadkowych przypadkach. Działa nieco lepiej z poniższą zmianą:
źródło