¿Hay un atajo que revela el archivo actual en el panel del directorio NerdTree?
Como TextMate 'Mostrar archivo en el cajón' - Ctrl + Comando + R
¿Hay un atajo que revela el archivo actual en el panel del directorio NerdTree?
Como TextMate 'Mostrar archivo en el cajón' - Ctrl + Comando + R
Respuestas:
en: 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.
No creo que esté vinculado a nada de forma predeterminada, por lo que debe realizar una combinación de teclas usted mismo.
nmap ,n :NERDTreeFind<CR>
es lo que aparece en mi .vimrc, junto con
nmap ,m :NERDTreeToggle<CR>
:NERDTreeFind
Mire esto, automatiza la operación de sincronización, cada vez que cambia el búfer, el nerdtree se actualizará automáticamente (lo copié desde aquí con pequeñas modificaciones)
" 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 en lugar del BufEnter
solucionado el problema.
Esto probablemente también debería ser solo un comentario. Con la versión actual, alternar NerdTree y usar SyncTree hace que NERDTree se invoque dos veces. Esta modificación parece solucionar ese 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>
Para acompañar la publicación de Chen Rushan, la llamada autocmd BufEnter * SyncTree () no permitirá que NERDTree se cierre. No pude encontrar una solución (que no sea la siguiente) que resalte el búfer abierto actual en NERDTree mientras permite que NERDTree se alterne.
A continuación se muestra lo que reuní para poder alternar NERDTree y tener archivos resaltados mientras usaba Ctrl +] para mi próxima asignación de búfer.
Ojalá otros puedan mejorar esto.
"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 respuesta de Chen Rushan + el comentario funcionó perfectamente bien para mí solo, excepto cuando el árbol está activado. Esta configuración revelará el archivo actual en el árbol cuando se abra el árbol.
" 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>