Quando abro uma nova guia com caminho diferente do arquivo anterior no VIM, o NERDTree continuará sendo a mesma hierarquia de diretórios do arquivo anterior.
Existe um atalho de sincronização para alterar o diretório raiz atual para o novo diretório do arquivo aberto?
vim
gvim
nerdtree
vim-plugins
Jichao
fonte
fonte
<Leader>f
<leader>
?jogue um sinal de% no final como um chefe
:NERDTree %
Eu tenho isso no meu .vimrc, ele mapeia Ctrl+ opara alternar nerdtree no diretório do buffer atual:
map <C-o> :NERDTreeToggle %<CR>
fonte
Achei as respostas existentes educacionais e combinei as duas com êxito, de modo que o comportamento se parecesse com o que muitas pessoas esperariam de um IDE: Clique em uma janela / buffer aberto e destaque esse arquivo no NERDTree. Coloquei isso no meu ~ / .vimrc:
autocmd BufEnter * if &modifiable | NERDTreeFind | wincmd p | endif
O que isso faz:
autocmd BufEnter
- é executado sempre que você se concentra em um buffer (incluindo a janela NERDTree)if &modifiable
- ao clicar na janela NERDTree, não faça mais nada (a janela NERDTree não é modificável)wincmd p
- NERDTreeFind deixa o cursor focado no NERDTree; isso volta para a janela em que você se concentrou originalmenteObserve que isso não funcionará em nenhum outro buffer que não seja modificável - mas isso geralmente é uma coisa boa; caso contrário (por exemplo) sempre que você entrar
:help
no vim, o NERDTree encontrará e focará o diretório em que os arquivos de ajuda estão armazenados - provavelmente não é algo que você deseja que ele faça.Essa solução de uma linha funcionou muito bem para mim no início, mas logo descobri que ela faz com que o NERDTree seja ativado sempre que eu abro um arquivo - e, como resultado, impede que o NERDTree seja fechado! Se você não quiser usar o NERDTree em tempo integral, coloque-o no seu .vimrc:
fonte
isNTFocused()
? O&modifiable
cheque não cobre esse caso?Function name must start with a capital or "s:": rc:isNTOpen()
Você está usando um plug-in que estende escopos?.vimrc
em que escrevi esse código. Não me lembro por que usei orc:
, mas acho que foi uma coisa de espaço para nome evitar conflitos de nome com outras funções. Eu não estava usando nenhum plugin especificamente relacionado a isso, tanto quanto me lembro. Você terá que estudar os documentos ou apenas tentar deixar de fora e ver se algo quebra. Mas acho que um dos nomes das funções entra em conflito com algo no NerdTree ou em outro lugar. Ninguém mais perguntou em quase cinco anos, então eu sinto que é algo simples. :)Encontrei essa pergunta ontem, depois de algumas horas de escavação, enviei uma solicitação de solicitação ao repositório nerdtree do scrooloose, introduzindo um
NERDTreeCWD
comando que altera a raiz da árvore NERD para o diretório de trabalho atual (Atualização em 12/11/2012: o PR foi mesclado o mestre upstream, deve ser utilizável em uma versão atualizada). Com essa alteração, essa questão pode ser simplesmente resolvida pelo código a seguir.Compare com a abordagem do @ shinzui e do @ Lambart
NERDTreeFind
, isso faz exatamente o que a pergunta foi feita. O usoNERDTreeFind
mudará a posição de rolagem da nerdtree e o resultado nem sempre será o mesmo (se o CWD estiver na raiz da árvore NERD, ele simplesmente expandirá o nó, mudando para ele).Compare com a resposta de @Yaser Sulaiman, essa solução sempre tem uma janela de árvore NERD aberta e pode ser facilmente codificada. Se uma janela da árvore NERD já foi aberta, o uso
NERDTreeToggle
precisará ser acionado duas vezes (primeiro feche a existente e depois abra-a novamente); infelizmente, a segunda abertura ignorará todo o processamento do cwd.fonte
Isso se comporta como,
:NERDTreeToggle
mas mostrará o arquivo aberto no momento no NERDTree. Se você ainda não abriu um arquivo (ou seja, você acabou de inserirvim
sua linha de comando), o NERDTree é exibido/home
.Coloque isso no seu .vimrc:
fonte
Aplico as duas soluções de Alterar diretório atual usando o NERDTree : use
cd
para definir o diretório de trabalho do NERDTree como o diretório atual eC
para definir o nó raiz do NERDTree como o diretório atualfonte
Eu acho que este plugin é o que você deseja https://github.com/jistr/vim-nerdtree-tabs
fonte
Eu achei a resposta que Matthias postou como uma ótima resposta para um problema, ela não funciona bem em alguns casos extremos. Funciona um pouco melhor com a alteração abaixo:
fonte