উত্তর:
এটি করার কোনও NERDTree- নির্দিষ্ট উপায় আছে কিনা তা আমি নিশ্চিত নই, তবে আপনি সর্বদা ভিমকে কনফিগার করতে পারেন যাতে এটি চলমান ডিরেক্টরিটি বর্তমান ফাইলের ডিরেক্টরিতে সেট করে :
autocmd BufEnter * lcd %:p:h
নতুন ট্যাবে ফাইল খোলার পরে আপনাকে যা করতে হবে তা সবই :NERDTreeToggle
নতুন ট্যাবে।
NERDTree তে বর্তমান বাফারটি দেখতে আমি নিম্নলিখিত ম্যাপিংটি ব্যবহার করি:
map <leader>r :NERDTreeFind<cr>
<leader>
?
মনিবের মতো শেষের দিকে% চিহ্ন দিন
:NERDTree %
আমি আমার .vimrc মধ্যে এই আছে, মানচিত্রের Ctrl+ + oবর্তমান বাফার দির nerdtree টগল করার জন্য:
map <C-o> :NERDTreeToggle %<CR>
আমি বিদ্যমান দুটি উত্তরই শিক্ষাগত পেয়েছি এবং সাফল্যের সাথে দুটি মিলিয়েছি যাতে আচরণটি অনেকের মতোই আইডিই থেকে প্রত্যাশা করা যায়: একটি খোলা উইন্ডো / বাফারটিতে ক্লিক করুন এবং সেই ফাইলটি এনইআরডিট্রিতে হাইলাইট করা আছে। আমি এটি আমার ~ / .vimrc এ রেখেছি:
autocmd BufEnter * if &modifiable | NERDTreeFind | wincmd p | endif
এটি কী করে:
autocmd BufEnter
- প্রতিবার আপনি যখন বাফারের উপর ফোকাস করেন তখন চালায় (এনইআরডিডি উইন্ডো সহ)if &modifiable
- আপনি যখন NERDTree উইন্ডোতে ক্লিক করবেন তখন আর কিছুই করবেন না (NERDTree উইন্ডোটি পরিবর্তনযোগ্য নয়)wincmd p
- NERDTreeFind NERDTree এর উপর দৃষ্টি নিবদ্ধ করে কার্সার ছেড়ে দেয়; আপনি উইন্ডোটিতে মূলত ফোকাস করতে চাইলে এটি আবার স্যুইচ করেদ্রষ্টব্য যে এটি অন্য কোনও বাফারে কাজ করবে না যা পরিবর্তনযোগ্য নয় - তবে এটি সাধারণত একটি ভাল জিনিস; অন্যথায় (উদাহরণস্বরূপ) আপনি যখন :help
ভিএম-এ পেয়েছেন তখন NERDTree ডিরেক্টরিটি যেখানে ফাইলগুলি সংরক্ষণ করে সেখানে সন্ধান করে এবং ফোকাস করবে - সম্ভবত আপনি এটি করতে চান এমন কিছু নয়।
এই এক-লাইন সমাধানটি প্রথমে আমার পক্ষে দুর্দান্ত কাজ করেছে, তবে আমি শীঘ্রই খুঁজে পেলাম যে এটি যখনই ফাইল খুললাম তখনই NERDTree সক্রিয় করতে পারে - এবং ফলস্বরূপ, এটি NERDTree কে কখনও বন্ধ হতে বাধা দেয়! আপনি যদি NERDTree ফুলটাইম ব্যবহার করতে না চান তবে এর পরিবর্তে আপনার .vimrc এ রাখুন:
" returns true iff is NERDTree open/active
function! rc:isNTOpen()
return exists("t:NERDTreeBufName") && (bufwinnr(t:NERDTreeBufName) != -1)
endfunction
" calls NERDTreeFind iff NERDTree is active, current window contains a modifiable file, and we're not in vimdiff
function! rc:syncTree()
if &modifiable && rc:isNTOpen() && strlen(expand('%')) > 0 && !&diff
NERDTreeFind
wincmd p
endif
endfunction
autocmd BufEnter * call rc:syncTree()
isNTFocused()
? &modifiable
চেকটি কি সেই মামলাটি কভার করে না?
Function name must start with a capital or "s:": rc:isNTOpen()
আপনি কি স্কোপগুলি বাড়ানোর জন্য একটি প্লাগইন ব্যবহার করছেন?
.vimrc
যেখানে আমি এই কোডটি লিখেছিলাম। আমি কেন এটি ব্যবহার করেছি তা মনে নেই rc:
, তবে আমি মনে করি এটি অন্যান্য ফাংশনগুলির সাথে নামের দ্বন্দ্ব এড়ানোর জন্য এটি একটি নেমস্পেসিং জিনিস ছিল। আমি যতটুকু স্মরণ করি আমি এর সাথে সম্পর্কিত কোনও প্লাগইন ব্যবহার করছিলাম না। আপনাকে দস্তাবেজগুলি অধ্যয়ন করতে হবে, বা কেবল এটি ছেড়ে দেওয়ার চেষ্টা করুন এবং কোনও কিছু ব্রেক হয়েছে কিনা তা দেখুন। তবে আমি মনে করি ফাংশনটির একটির নাম NerdTree বা অন্য কোথাও কোথাও বিরোধী ted প্রায় 5 বছরে আর কেউ জিজ্ঞাসা করেনি, তাই আমার মনে হচ্ছে এটি সাধারণ কিছু something :)
গতকাল আমি এই প্রশ্নের জুড়ে এসেছিল, খনন কয়েক ঘন্টা পরে, আমি একটি দাখিল টানুন অনুরোধ করতে এর scrooloose nerdtree রেপো একটি উপস্থাপক NERDTreeCWD
কমান্ড যে সাম্প্রতিক কাজ করা (আপডেট করার Nerd গাছ শিকড় পরিবর্তন 2012-11-12 করুন: জনসংযোগ মধ্যে মিশে গিয়ে তৈরি হয়েছে আপস্ট্রিম মাস্টার, এটি কোনও আপডেট হওয়া সংস্করণে ব্যবহারযোগ্য হবে)। এই পরিবর্তনের সাথে, এই প্রশ্নটি কেবল নিম্নলিখিত কোড দ্বারা সমাধান করা যেতে পারে।
autocmd BufEnter * silent! if bufname('%') !~# 'NERD_tree_' | cd %:p:h | NERDTreeCWD | wincmd p | endif
@ শিনজুই এবং @ ল্যাম্বার্টের NERDTreeFind
পদ্ধতির সাথে তুলনা করুন , এটি প্রশ্নটি ঠিক যেমনটি জিজ্ঞাসা করেছিল ঠিক তাই করে। ব্যবহার NERDTreeFind
nerdtree এবং ফলাফলের স্ক্রোল অবস্থানে পরিবর্তন হবে সব সময় নয় (যদি CWD Nerd গাছ root- র মধ্যে, এটা সহজভাবে বিস্তৃতি নোড পরিবর্তে তা পরিবর্তন) একই।
@ ইয়াসির সুলাইমানের উত্তরের সাথে তুলনা করুন, এই সমাধানটি সবসময়ই একটি NERD গাছের উইন্ডো খোলা থাকে এবং সহজে কোডিংযোগ্য হতে পারে। যদি একটি এনইআরডি ট্রি উইন্ডো ইতিমধ্যে খোলা হয়েছে, ব্যবহার করে NERDTreeToggle
দু'বার গুলি চালানো দরকার (প্রথমে বিদ্যমানটি বন্ধ করুন, তারপরে এটি আবার খুলুন), দুর্ভাগ্যক্রমে, দ্বিতীয় খোলার পুরো সিডব্লিউডি প্রক্রিয়াটি এড়িয়ে যাবে।
এটি এর মতো আচরণ করে :NERDTreeToggle
তবে বর্তমানে এনআরডিডি ট্রিতে খোলা ফাইলটি প্রদর্শন করবে। যদি আপনি এখনও কোনও ফাইল না খোলেন (যেমন, আপনি কেবলমাত্র vim
আপনার কমান্ডলাইনে প্রবেশ করেছেন) NERDTree শোগুলি /home
।
এটি আপনার .vimrc এ রাখুন:
" Open NERDTree in the directory of the current file (or /home if no file is open)
nmap <silent> <C-i> :call NERDTreeToggleInCurDir()<cr>
function! NERDTreeToggleInCurDir()
" If NERDTree is open in the current buffer
if (exists("t:NERDTreeBufName") && bufwinnr(t:NERDTreeBufName) != -1)
exe ":NERDTreeClose"
else
exe ":NERDTreeFind"
endif
endfunction
আমি NERDTree ব্যবহার করে বর্তমান ডিরেক্টরি পরিবর্তন থেকে উভয় সমাধানই প্রয়োগ করি : cd
NERDTree কার্যকারী ডিরেক্টরিটি বর্তমান ডিরেক্টরিতে C
সেট করতে এবং NERDTree এর মূল নোডকে বর্তমান ডিরেক্টরিতে সেট করতে ব্যবহার করুন
আমি মনে করি এই প্লাগইনটি আপনি যা চান https://github.com/jistr/vim-nerdtree-tabs
আমি উত্তর পেয়েছি যে ম্যাথিয়াস একটি সমস্যা নিয়ে দুর্দান্ত উত্তর হিসাবে পোস্ট করেছে, এটি বেশ কয়েকটি প্রান্তের ক্ষেত্রে ভাল কাজ করে না। এটি নীচের পরিবর্তনের সাথে কিছুটা ভাল কাজ করে:
function! NERDTreeToggleInCurDir()
" If NERDTree is open in the current buffer
if (exists("t:NERDTreeBufName") && bufwinnr(t:NERDTreeBufName) != -1)
exe ":NERDTreeClose"
elseif bufname('%')
exe ":NERDTreeFind"
else
exe ":NERDTreeCWD"
endif
endfunction
<Leader>f