Чи є ярлик, який розкриває поточний файл на панелі каталогу NerdTree.
Як TextMate 'Виявити файл у ящику' - Ctrl + Command + R
Чи є ярлик, який розкриває поточний файл на панелі каталогу NerdTree.
Як TextMate 'Виявити файл у ящику' - Ctrl + Command + R
Відповіді:
в: 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.
Я не думаю, що за замовчуванням це пов'язане ні з чим, тому вам доведеться робити прив'язку клавіш самостійно.
nmap ,n :NERDTreeFind<CR>
це те, що з’являється в моєму .vimrc, разом з
nmap ,m :NERDTreeToggle<CR>
:NERDTreeFind
Перевірте це, він автоматизує операцію синхронізації, щоразу, коли ви зміните буфер, nerdtree автоматично оновиться (я скопіював звідси крихітні модифікації)
" 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
події замість BufEnter
виправленої проблеми.
Це також, мабуть, має бути лише коментарем. Якщо поточна версія перемикає NerdTree та використовує SyncTree, то NERDTree викликається двічі. Ця модифікація, здається, вирішує цю проблему:
" 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>
Іти разом із посадою Чену Рушана, Autocmd BufEnter * виклик SyncTree () не дозволить закрити NERDTree. Я не зміг знайти рішення (крім наведеного нижче), яке б виділило поточний відкритий буфер у NERDTree, дозволяючи NERDTree переключатися.
Нижче наведено те, що я скребкував, щоб мати можливість перемикати NERDTree та виділяти файли під час використання Ctrl +] для мого наступного відображення буфера.
Сподіваємось, інші можуть це покращити.
"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>
Відповідь Чен Рушан + коментар спрацював для мене чудово лише за винятком випадків, коли дерево активоване. Ці параметри відкриють поточний файл у дереві при відкритті дерева.
" 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>