Podczas korzystania z wtyczki NERDTree domyślnym zachowaniem jest otwieranie nowego pliku i utrzymywanie bufora NERDTree otwartego. Chcę zachować to domyślne zachowanie, ale także przesłonić je, kiedy chcę, aby bufor NERDTree został zamknięty po otwarciu pliku.
Wiem, że mogę użyć let NERDTreeQuitOnOpen=1
do automatycznego zamknięcia bufora NERDTree po otwarciu nowego pliku, ale ta opcja całkowicie zastępuje domyślne zachowanie (czego nie chcę).
Idealnie chciałbym wiedzieć, czy w NERDTree jest wbudowana funkcja robienia tego, co chcę. (Szukałem, ale niczego takiego nie znalazłem, więc przypuszczam, że tak naprawdę nie istnieje)
A jeśli to nie istnieje, miałem dwa pomysły:
Najpierw należy utworzyć funkcję, która ustawia
NERDTreeQuitOnOpen
się1
, otwiera plik, a następnie ustawia ponownieNERDTreeQuitOnOpen
na0
.Drugim jest utworzenie następującego mapowania:
map d<CR> <CR> :NERDTree <CR> :bd<CR>
który otwiera plik (pierwszy<CR>
), wraca do bufora NERDTree (:NERDTree <CR>
) i zamyka ten bufor (:bd <CR>
). Powinienem to poprawić, aby mapowanie istniało tylko w buforze NERDTree, ale uważam, że jest to dość brzydkie rozwiązanie i myślę, że można to poprawić.
Który pomysł byłby najlepszy i dlaczego? Czy jest jeszcze lepsza opcja?
źródło
map d<cr> <cr>:NERDTreeClose<cr>
do mapowania?Odpowiedzi:
Ponieważ wydaje się, że pytanie nie generuje wielu odpowiedzi, po prostu odpowiem na nie z sugestią @muru, z której korzystałem przez tydzień, zanim przełączyłem się na Eksploratora Netrw. (Oczywiście, jeśli pojawi się lepsza opcja odpowiedzi, chętnie zaznaczę moją jako zaakceptowaną i zaakceptuję nową)
Chodzi o użycie następującego mapowania:
Który otwiera plik w zwykły sposób, a następnie wywołuje funkcję zamykającą bufor NERDTree bez względu na to, gdzie znajduje się kursor.
EDYCJA: Niedawno wróciłem do NERDTree i przerobiłem moje rozwiązanie: mapowanie, które zasugerowałem wcześniej, działało, ale ponieważ istniało w każdym buforze, musiałem dwukrotnie naciskać za dkażdym razem, gdy chciałem usunąć coś, co jest dość denerwujące. (Może mogłem zmienić
timeout
ustawienia, ale podoba mi się sposób, w jaki jest obecnie ustawiony, a także nie chciałem mapować go na inną kombinację klawiszy).Zastąpiłem więc moje pierwsze rozwiązanie następującymi liniami
.vimrc
:W ten sposób mapowanie jest tworzone tylko w
NERDTree
buforach i nie zakłóca mojego przepływu pracy w innych buforach.źródło