Как открыть и закрыть NERDTree (переключение вида NERDTree) одним нажатием клавиши?


21

Иногда во время рабочего процесса я могу захотеть открыть / найти файл на ходу. Я хотел бы сопоставить одну клавишу (скажем, F6), чтобы открывать и закрывать NERDTree (т.е. я хочу переключать представление NERDTree). Кроме того, я хотел бы, чтобы NERDTree отображал скрытые файлы и папки в его переключенном виде, и я также хотел бы, чтобы он автоматически закрывался при открытии файла для редактирования, если это возможно. Благодарность !


1
Привет, добро пожаловать на сайт! Пожалуйста, имейте в виду, что лучше задать несколько вопросов, а не один с разными точками. то есть здесь вы можете задать еще один вопрос, касающийся скрытых файлов и папок, потому что основной вопрос определенно касается переключения (на которое вы уже получили ответ). Также не забудьте прочитать документацию по плагину и провести часы в нем :h;)
nobe4

Ответы:


29

В вашем vimrcдобавлении

nmap <F6> :NERDTreeToggle<CR>

где <F6>ключ, который вы хотите отобразить.


Прекрасно работает, но как показать скрытые файлы и папки одновременно?
evil_potato

3
@evil_potato shift + iпереключит скрытые файлы. Если вы хотите установить поведение по умолчанию, добавьте let NERDTreeShowHidden=1в свой.vimrc
Atropo

3
@evil_potato Также автоматически закрывать при открытии файла для редактирования добавить let NERDTreeQuitOnOpen=1в свой.vimrc
dNitro

9

Чтобы открыть NerdTree:

:NERDTreeFocus

Чтобы переключиться между окнами типа nerdtree и file:

ctrl + ww (double w)

или

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

Чтобы закрыть NerdTree (в окне nerdtree):

:q

3

Это будет делать именно то, что вы просили:

nnoremap <silent> <expr> <F6> g:NERDTree.IsOpen() ? "\:NERDTreeClose<CR>" : bufexists(expand('%')) ? "\:NERDTreeFind<CR>" : "\:NERDTree<CR>"

1

Если вы хотите закрыть окно NERDTree, убедитесь, что вы находитесь внутри меню NERDTree. Вы можете переключать окна, используя ctrl+wзатем тип, :qчтобы закрыть окно NERDTree, чтобы у вас было окно для редактирования вашего кода.


Это именно то, что я искал, но как насчет открытия его снова, мне нужно сопоставить другой ключ или есть собственный ярлык, который снова откроет NERDTree?
Deesbek

0

Следующая функция отслеживает открытые буферы netrw и вызывает Lexploreсоответственно. Добавьте его в свой .vimrcи выберите свой ключ сопоставления.

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>

4
Не могли бы вы объяснить, как это лучше, чем команда, NERDTreeToggleкоторая поставляется с NerdTree?
statox
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.