Apakah ada jalan pintas yang menampilkan file saat ini di panel direktori NerdTree.
Seperti TextMate 'Reveal file in Drawer' - Ctrl + Command + R
Apakah ada jalan pintas yang menampilkan file saat ini di panel direktori NerdTree.
Seperti TextMate 'Reveal file in Drawer' - Ctrl + Command + R
Jawaban:
dalam: 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.
Saya tidak berpikir itu terikat pada apa pun secara default, jadi Anda harus melakukan keybind sendiri.
nmap ,n :NERDTreeFind<CR>
adalah apa yang muncul di .vimrc saya, bersama dengan
nmap ,m :NERDTreeToggle<CR>
:NERDTreeFind
Lihat ini, ini mengotomatiskan operasi sinkronisasi, setiap kali Anda mengubah buffer, nerdtree akan secara otomatis menyegarkan dirinya sendiri (saya salin dari sini dengan sedikit modifikasi)
" 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
acara sebagai ganti BufEnter
memperbaiki masalah.
Ini mungkin juga hanya sebuah komentar. Dengan versi saat ini mengubah NerdTree dan menggunakan SyncTree menyebabkan NERDTree dipanggil dua kali. Modifikasi ini sepertinya memperbaiki masalah itu:
" 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>
Untuk mengikuti pos Chen Rushan, panggilan otomatis BufEnter * SyncTree () tidak akan membiarkan NERDTree ditutup. Saya tidak dapat menemukan solusi (selain di bawah) yang akan menyoroti buffer terbuka saat ini di NERDTree sambil mengizinkan NERDTree untuk Beralih.
Di bawah ini adalah apa yang saya sisir bersama untuk dapat mengaktifkan NERDTree dan memiliki file yang disorot saat menggunakan Ctrl +] untuk pemetaan buffer berikutnya.
Semoga yang lain bisa memperbaiki ini.
"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>
Jawaban Chen Rushan + komentar itu bekerja dengan sangat baik untuk saya hanya kecuali jika pohonnya diaktifkan. Pengaturan ini akan mengungkapkan file saat ini di pohon ketika pohon dibuka.
" 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>