NerdTree - গাছে ফাইল প্রকাশ


101

এমন একটি শর্টকাট রয়েছে যা NerdTree ডিরেক্টরি প্যানেলে বর্তমান ফাইলটি প্রকাশ করে।

টেক্সটমেটের মতো 'ড্রয়ারে ফাইলটি প্রকাশ করুন' - Ctrl + কমান্ড + আর

উত্তর:


186

ইন: এইচ 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>

কীম্যাপিংটি কাজ করে, তবে কীভাবে ভিআইএম-এর মধ্যে এনইআরডিডিফ্রিফিন্ডটি চাওয়া যায়?
আজাতর

9
@ টসস্টার কেবল:NERDTreeFind
টমাস

1
Whenever ট্যাবটির মধ্যে যখনই এনইআরডিট্রি তৈরি হয় তখন এটি করার জন্য এটির কোনও উপায় নেই?
মিঃ মিক্কল

1
@ এমআরএ আপনি কেবল NERDTreeFind কমান্ড দিয়ে কেবল NERDTree তৈরি করতে পারবেন - এটি কি যথেষ্ট?
টমাস

21

এটি দেখুন, এটি সিঙ্ক অপারেশনটিকে স্বয়ংক্রিয় করে তোলে, যখনই আপনি বাফার পরিবর্তন করবেন, নার্ডট্রি স্বয়ংক্রিয়ভাবে নিজেকে রিফ্রেশ করবে (আমি এখানে ছোট ছোট পরিবর্তন করে অনুলিপি করেছি )

" 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()

আপনাকে ধন্যবাদ, আমি এতদিন ধরে এটি খুঁজছিলাম! :)
গাগনো

এই কনফিগারেশন বেশিরভাগ ক্ষেত্রে ভাল কাজ করে তবে আমি coc.nvim ব্যবহার করে রেফারেন্স কার্যকারিতাটিতে যাইহোক এটি সবকিছু বিভ্রান্ত করে। সমস্যা স্থির BufReadজায়গায় ইভেন্ট ব্যবহার BufEnter
এডি কুরো

6

এটি সম্ভবত একটি মন্তব্যও হওয়া উচিত। 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>

0

চেন রুশানের পোস্টের সাথে যেতে, স্বতঃসিএমডি বুফএন্টার * কল করুন সিঙ্কট্রি () 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>

0

চেন রুশনের উত্তর + মন্তব্যটি কেবলমাত্র গাছ সক্রিয় করা ব্যতীত আমার পক্ষে পুরোপুরি কার্যকর হয়েছিল। গাছটি খোলার সাথে সাথে এই সেটিংসটি গাছের বর্তমান ফাইলটি প্রকাশ করবে।

" 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>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.