Como abrir e fechar o NERDTree (alternar a exibição do NERDTree) usando uma única tecla?

20

Às vezes, durante o meu fluxo de trabalho, talvez eu queira abrir / procurar um arquivo em movimento. Gostaria de mapear uma única tecla (digamos F6) para abrir e fechar o NERDTree (ou seja, quero alternar a exibição do NERDTree). Além disso, eu gostaria que o NERDTree exibisse arquivos e pastas ocultos em sua exibição alternada e também fecharia automaticamente quando eu abrir um arquivo para edição, se isso for possível. Obrigado !

evil_potato
fonte
11
Olá, seja bem-vindo ao site! Lembre-se de que é melhor fazer várias perguntas em vez de uma com pontos diferentes. ou seja, aqui você pode fazer outra pergunta sobre os arquivos e pastas ocultos, porque a pergunta principal é definitivamente sobre a alternância (para a qual você já tem uma resposta). Também não se esqueça de ler a documentação plugin e passar horas em :h;)
nobe4

Respostas:

28

No seu vimrcadd

nmap <F6> :NERDTreeToggle<CR>

onde <F6>está a chave que você deseja mapear.

Atropo
fonte
Funciona muito bem, mas como mostro arquivos e pastas ocultos ao mesmo tempo?
evil_potato
3
@evil_potato shift + ialternará os arquivos ocultos. Se você deseja definir como comportamento padrão, adicione let NERDTreeShowHidden=1ao seu.vimrc
Atropo
3
@evil_potato Também para fechar automaticamente quando abrir um arquivo para edição, adicione let NERDTreeQuitOnOpen=1ao seu.vimrc
dNitro 19/10/16
9

Para abrir o NerdTree:

:NERDTreeFocus

Para alternar entre as janelas abertas do nerdtree e do arquivo:

ctrl + ww (double w)

ou

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

Para fechar o NerdTree (na janela do nerdtree):

:q
Ardi Nusawan
fonte
3

Isso faria exatamente o que você solicitou:

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

Se você deseja fechar a janela do NERDTree, verifique se está dentro do menu NERDTree. Você pode alternar entre janelas, usando o ctrl+wtipo :qpara fechar a janela NERDTree, para que você fique com a janela para editar seu código.

Philip
fonte
Era exatamente isso que eu estava procurando, mas que tal abri-la novamente? Preciso mapear outra chave ou existe um atalho nativo que abrirá o NERDTree novamente?
Deesbek
0

A função a seguir rastreia os buffers netrw abertos e chama de Lexploreacordo. Adicione-o ao seu .vimrce escolha sua chave de mapeamento.

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
fonte
4
Você poderia explicar como é melhor que o comando NERDTreeToggleque acompanha o NerdTree?
statox