Có phím tắt nào tiết lộ tệp hiện tại trong bảng điều khiển thư mục NerdTree không.
Giống như TextMate 'Hiển thị tệp trong ngăn kéo' - Ctrl + Command + R
Có phím tắt nào tiết lộ tệp hiện tại trong bảng điều khiển thư mục NerdTree không.
Giống như TextMate 'Hiển thị tệp trong ngăn kéo' - Ctrl + Command + R
Câu trả lời:
trong: 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.
Tôi không nghĩ rằng nó bị ràng buộc với bất kỳ thứ gì theo mặc định, vì vậy bạn phải tự làm keybind.
nmap ,n :NERDTreeFind<CR>
là những gì xuất hiện trong .vimrc của tôi, cùng với
nmap ,m :NERDTreeToggle<CR>
:NERDTreeFind
Kiểm tra điều này, nó tự động hóa hoạt động đồng bộ hóa, bất cứ khi nào bạn thay đổi bộ đệm, nerdtree sẽ tự động làm mới chính nó (tôi đã sao chép từ đây với các sửa đổi nhỏ)
" 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
sự kiện thay cho sự BufEnter
cố đã khắc phục.
Đây cũng có thể chỉ là một nhận xét. Với phiên bản hiện tại, việc chuyển đổi NerdTree và sử dụng SyncTree khiến NERDTree được gọi hai lần. Sửa đổi này dường như để khắc phục sự cố đó:
" 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>
Cùng với bài đăng của Chen Rushan, lệnh gọi autocmd BufEnter * SyncTree () sẽ không cho phép NERDTree đóng. Tôi không thể tìm thấy giải pháp (khác với bên dưới) có thể làm nổi bật bộ đệm đang mở hiện tại trong NERDTree trong khi cho phép NERDTree chuyển đổi.
Dưới đây là những gì tôi đã tổng hợp lại để có thể chuyển đổi NERDTree và đánh dấu các tệp trong khi sử dụng Ctrl +] cho ánh xạ bộ đệm tiếp theo của tôi.
Hy vọng rằng những người khác có thể cải thiện điều này.
"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>
Câu trả lời của Chen Rushan + nhận xét hoạt động hoàn toàn tốt đối với tôi chỉ trừ khi cây được kích hoạt. Cài đặt này sẽ hiển thị tệp hiện tại trong cây khi cây được mở.
" 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>