NerdTreeディレクトリパネルに現在のファイルを表示するショートカットはありますか?
TextMate 'ドロワーのファイルを表示'のように-Ctrl + Command + R
NerdTreeディレクトリパネルに現在のファイルを表示するショートカットはありますか?
TextMate 'ドロワーのファイルを表示'のように-Ctrl + Command + R
回答:
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.
デフォルトでは何にもバインドされていないと思うので、自分でキーバインドを行う必要があります。
nmap ,n :NERDTreeFind<CR>
と一緒に私の.vimrcに表示されるものです
nmap ,m :NERDTreeToggle<CR>
:NERDTreeFind
これをチェックしてください、それは同期操作を自動化します、あなたがバッファを変更するときはいつでも、オタクはそれ自身を自動的にリフレッシュします(私はここに小さな変更を加えてコピーしました)
" 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が2回呼び出されます。この変更はその問題を修正するようです:
" 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>
Chen Rushanの投稿に沿って、autocmd BufEnter *を呼び出してSyncTree()を呼び出してもNERDTreeは閉じません。NERDTreeの切り替えを許可しながらNERDTreeで現在開いているバッファを強調表示する解決策(以下以外)が見つかりませんでした。
以下は、次のバッファマッピングにCtrl +]を使用しているときにNERDTreeを切り替えてファイルをハイライト表示できるようにするために一緒に削ったものです。
うまくいけば、他の人がこれを改善できます。
"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>
Chen Rushanの回答+コメントは、ツリーがアクティブ化されている場合を除いて、完全にうまく機能しました。この設定により、ツリーを開いたときにツリー内の現在のファイルが表示されます。
" 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>