NerdTree - 在树中显示文件

Aks*_*wat 95 vim nerdtree

是否有快捷方式显示NerdTree目录面板中的当前文件.

像TextMate'在抽屉中显示文件' - Ctrl + Command + R.

Tho*_*mas 177

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.
Run Code Online (Sandbox Code Playgroud)

我不认为默认情况下它会受到任何限制,所以你必须自己做一个键盘绑定.

nmap ,n :NERDTreeFind<CR>
Run Code Online (Sandbox Code Playgroud)

是我的.vimrc中出现的内容

nmap ,m :NERDTreeToggle<CR>
Run Code Online (Sandbox Code Playgroud)

  • @toszter只是`:NERDTreeFind` (8认同)

Che*_*han 17

检查一下,它会自动执行同步操作,每当你更改缓冲区时,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()
Run Code Online (Sandbox Code Playgroud)


Bob*_*ann 7

这也可能只是一个评论。当前版本切换 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>
Run Code Online (Sandbox Code Playgroud)