Jak otworzyć i zamknąć NERDTree (przełącz widok NERDTree) za pomocą jednego naciśnięcia klawisza?

22

Czasami podczas mojego przepływu pracy mogę chcieć otworzyć / wyszukać plik w podróży. Chciałbym zmapować pojedynczy klucz (powiedzmy F6), aby otworzyć i zamknąć NERDTree (tzn. Chcę przełączyć widok NERDTree). Ponadto chciałbym, aby NERDTree wyświetlał ukryte pliki i foldery w przełączanym widoku, a także chciałbym, aby zamykał się automatycznie po otwarciu pliku do edycji, jeśli to możliwe. Dzięki !

evil_potato
źródło
1
Cześć, witam na stronie! Pamiętaj, że lepiej zadawać wiele pytań zamiast jednego z różnymi punktami. tzn. tutaj możesz zadać kolejne pytanie dotyczące ukrytych plików i folderów, ponieważ główne pytanie zdecydowanie dotyczy przełącznika (na który już masz odpowiedź). Nie zapomnij także przeczytać dokumentacji wtyczki i spędzić godziny :h;)
nobe4

Odpowiedzi:

29

W swoim vimrcdodaniu

nmap <F6> :NERDTreeToggle<CR>

gdzie <F6>jest klucz, który chcesz zmapować.

Atropo
źródło
Działa świetnie, ale jak mogę jednocześnie wyświetlać ukryte pliki i foldery?
evil_potato,
3
@evil_potato shift + ibędzie przełączać ukryte pliki. Jeśli chcesz ustawić jako zachowanie domyślne, dodaj let NERDTreeShowHidden=1do.vimrc
Atropo
3
@evil_potato Również, aby zamknąć automatycznie po otwarciu pliku do edycji dodaj let NERDTreeQuitOnOpen=1do swojego.vimrc
dNitro
9

Aby otworzyć NerdTree:

:NERDTreeFocus

Aby przełączyć między oknem nerdtree a otwartymi plikami:

ctrl + ww (double w)

lub

ctrl + w + (h/j/k/l)

Aby zamknąć NerdTree (w oknie nerdtree):

:q
Ardi Nusawan
źródło
3

To zrobiłoby dokładnie to, o co prosiłeś:

nnoremap <silent> <expr> <F6> g:NERDTree.IsOpen() ? "\:NERDTreeClose<CR>" : bufexists(expand('%')) ? "\:NERDTreeFind<CR>" : "\:NERDTree<CR>"
AdUki
źródło
1

Jeśli chcesz zamknąć okno NERDTree, upewnij się, że znajdujesz się w menu NERDTree. Możesz przełączać okna za pomocą, ctrl+wa następnie wpisz, :qaby zamknąć okno NERDTree, tak aby pozostało okno edycji kodu.

Philip
źródło
Właśnie tego szukałem, ale co z ponownym otwarciem, czy muszę zmapować inny klucz, czy istnieje natywny skrót, który ponownie otworzy NERDTree?
Deesbek,
0

Poniższa funkcja śledzi odpowiednio otwarte bufory sieci i wywołania Lexplore. Dodaj go do swojego .vimrci wybierz klucz mapowania.

let g:NetrwIsOpen=0

function! ToggleNetrw()
    if g:NetrwIsOpen
        let i = bufnr("$")
        while (i >= 1)
            if (getbufvar(i, "&filetype") == "netrw")
                silent exe "bwipeout " . i 
            endif
            let i-=1
        endwhile
        let g:NetrwIsOpen=0
    else
        let g:NetrwIsOpen=1
        silent Lexplore
    endif
endfunction

noremap <silent> <F2> :call ToggleNetrw()<CR>
Fabijan Bajo
źródło
4
Czy możesz wyjaśnić, jak to jest lepsze niż polecenie NERDTreeToggledostarczone z NerdTree?
statox
@statox - chodzi o otwarcie jednym klawiszem (lub prawdopodobnie kombinacją dwóch klawiszy) - zamiast wpisywania „:” + „N” + „E” + „R” + „D” + „T” + „r” + „e” + „e” i naciśnij Enter. Dokładnie to, czego teraz szukam :)
pesho hristov
1
@peshohristov Jeśli celem jest zmniejszenie liczby naciśnięć klawiszy, myślę, że odwzorowanie w liniach nnoremap <single-key> :NERDTreeToggle<CR>robi lewę, dlatego poprosiłem OP o podanie szczegółowych informacji na temat przydatności ich odpowiedzi.
statox