Як відкрити та закрити NERDTree (увімкнути перегляд NERDTree) за допомогою одного натискання клавіші?


22

Іноді під час мого робочого процесу я, можливо, захочу відкрити / шукати файл на ходу. Я хотів би зіставити одну клавішу (скажімо, 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 та файлами відкритих вікон:

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?
Дісбек

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

@statox - ідея полягає в тому, щоб відкрити клавішу singe (або, можливо, двома клавішами) - замість того, щоб вводити ":" + "N" + "E" + "R" + "D" + "T" + "r" + "e" + "e" і натисніть Enter. Точно те, про що я зараз хочу :)
pesho hristov

1
@peshohristov Якщо метою є зменшення кількості натискань на клавіші, я думаю, що відображення у рядках nnoremap <single-key> :NERDTreeToggle<CR>виконує трюк, тому я попросив ОП дати більше деталей щодо корисності їх відповіді.
statox
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.