C'è un collegamento che rivela il file corrente nel pannello delle directory di NerdTree.
Come TextMate "Rivela file nel cassetto" - Ctrl + Comando + R
C'è un collegamento che rivela il file corrente nel pannello delle directory di NerdTree.
Come TextMate "Rivela file nel cassetto" - Ctrl + Comando + R
Risposte:
in: h NERDTree:
:NERDTreeFind :NERDTreeFind
Find the current file in the tree. If no tree exists for the current tab,
or the file is not under the current root, then initialize a new tree where
the root is the directory of the current file.
Non penso che sia vincolato a nulla per impostazione predefinita, quindi devi eseguire una combinazione di tasti da solo.
nmap ,n :NERDTreeFind<CR>
è ciò che appare nel mio .vimrc, insieme a
nmap ,m :NERDTreeToggle<CR>
:NERDTreeFind
Controlla questo, automatizza l'operazione di sincronizzazione, ogni volta che cambi buffer, il nerdtree si aggiornerà automaticamente (ho copiato da qui con piccole modifiche)
" Check if NERDTree is open or active
function! IsNERDTreeOpen()
return exists("t:NERDTreeBufName") && (bufwinnr(t:NERDTreeBufName) != -1)
endfunction
" Call NERDTreeFind iff NERDTree is active, current window contains a modifiable
" file, and we're not in vimdiff
function! SyncTree()
if &modifiable && IsNERDTreeOpen() && strlen(expand('%')) > 0 && !&diff
NERDTreeFind
wincmd p
endif
endfunction
" Highlight currently open buffer in NERDTree
autocmd BufEnter * call SyncTree()
BufRead
evento al posto di BufEnter
risolto il problema.
Anche questo dovrebbe essere probabilmente solo un commento. Con la versione corrente, alternando NerdTree e usando SyncTree, NERDTree viene invocato due volte. Questa modifica sembra risolvere il problema:
" Check if NERDTree is open or active
function! IsNERDTreeOpen()
return exists("t:NERDTreeBufName") && (bufwinnr(t:NERDTreeBufName) != -1)
endfunction
" Call NERDTreeFind iff NERDTree is active, current window contains a modifiable
" file, and we're not in vimdiff
function! SyncTree()
if &modifiable && IsNERDTreeOpen() && strlen(expand('%')) > 0 && !&diff
NERDTreeFind
wincmd p
endif
endfunction
" Highlight currently open buffer in NERDTree
autocmd BufEnter * call SyncTree()
function! ToggleNerdTree()
set eventignore=BufEnter
NERDTreeToggle
set eventignore=
endfunction
nmap <C-n> :call ToggleNerdTree()<CR>
Per andare avanti con il post di Chen Rushan, l'autocmd BufEnter * call SyncTree () non lascerà che NERDTree si chiuda. Non sono riuscito a trovare una soluzione (diversa da quella di seguito) che evidenziasse l'attuale buffer aperto in NERDTree consentendo al contempo a NERDTree di attivare / disattivare.
Di seguito è riportato ciò che ho raccolto per essere in grado di attivare NERDTree e avere i file evidenziati mentre si utilizza Ctrl +] per la mia prossima mappatura del buffer.
Si spera che altri possano migliorare questo.
"Buffers
set hidden
function! IsNERDTreeOpen()
return exists("t:NERDTreeBufName") && (bufwinnr(t:NERDTreeBufName) != -1)
endfunction
function! NextBuffer()
bnext
if IsNERDTreeOpen()
NERDTreeFind
wincmd p
endif
endfunction
nnoremap <c-]> <Esc>:call NextBuffer()<CR>
function! PrevBuffer()
bprev
if IsNERDTreeOpen()
NERDTreeFind
wincmd p
endif
endfunction
nnoremap <c-[> <Esc>:call PrevBuffer()<CR>
function! ToggleNT()
NERDTreeToggle
endfunction
map <c-u> <Esc>:call ToggleNT()<cr>
La risposta di Chen Rushan + il commento ha funzionato perfettamente per me solo quando l'albero è attivato. Queste impostazioni riveleranno il file corrente nell'albero quando l'albero viene aperto.
" Check if NERDTree is open or active
function! IsNERDTreeOpen()
return exists("t:NERDTreeBufName") && (bufwinnr(t:NERDTreeBufName) != -1)
endfunction
function! CheckIfCurrentBufferIsFile()
return strlen(expand('%')) > 0
endfunction
" Call NERDTreeFind iff NERDTree is active, current window contains a modifiable
" file, and we're not in vimdiff
function! SyncTree()
if &modifiable && IsNERDTreeOpen() && CheckIfCurrentBufferIsFile() && !&diff
NERDTreeFind
wincmd p
endif
endfunction
" Highlight currently open buffer in NERDTree
autocmd BufRead * call SyncTree()
function! ToggleTree()
if CheckIfCurrentBufferIsFile()
if IsNERDTreeOpen()
NERDTreeClose
else
NERDTreeFind
endif
else
NERDTree
endif
endfunction
" open NERDTree with ctrl + n
nmap <C-n> :call ToggleTree()<CR>