如何使用单个按键打开和关闭NERDTree(切换NERDTree视图)?


22

有时,在工作流程中,我可能想随时随地打开/搜索文件。我想映射一个键(例如F6)以打开和关闭NERDTree(即,我想切换NERDTree视图)。另外,我希望NERDTree在其切换视图中显示隐藏的文件和文件夹,如果可能的话,当我打开文件进行编辑时,我也希望它自动关闭。谢谢 !


1
嗨,欢迎光临本站!请记住,最好提出多个问题,而不是提出不同的问题。即在这里您可以问另一个关于隐藏文件和文件夹的问题,因为主要的问题肯定是关于切换的(您已经找到了答案)。同样不要忘记阅读插件文档并花几个小时:h;)
nobe4 '16

Answers:


29

在您的vimrc添加中

nmap <F6> :NERDTreeToggle<CR>

<F6>您要映射的键在哪里。


效果很好,但是如何同时显示隐藏的文件和文件夹?
evil_potato '16

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?
Deesbek '18

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
您能解释一下它比NERDTreeToggleNerdTree随附的命令更好吗?
statox

@statox-想法是使用单键(或可能是两个键的组合)打开-而不是键入“:” +“ N” +“ E” +“ R” +“ D” +“ T” +“ r” +“ e” +“ e”然后点击Enter。正是我现在想要的:)
pesho hristov

1
@peshohristov如果我的目标是减少击键次数,那么我认为在的一行中进行映射是nnoremap <single-key> :NERDTreeToggle<CR>可以的,这就是为什么我要求OP提供更多有关其答案有用性的细节。
statox
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.