কোনও প্রকল্পের গাছে গভীরভাবে ফাইলগুলি সন্ধান এবং খোলার দক্ষ উপায়?


12

ctrlpএবং যেমন প্লাগইন NERDTreeনা থাকলে কোনও প্রকল্পের গাছে গভীরভাবে ফাইলগুলি সন্ধান এবং খোলার সবচেয়ে কার্যকর উপায় কী হবে?

সেট pathথেকে **/*এ বেহুদা ফাইল ফলাফল .gitএবং অন্যান্য লুকানো ডিরেক্টরি, যাতে প্রদর্শিত হয় প্রশ্নের বাইরে যাবে।

স্মার্ট পদ্ধতিতে পথ নির্ধারণের কোনও উপায় আছে কি যাতে এটিতে কেবল কোনও ফাইল git ls-filesবা কোনও কিছু অন্তর্ভুক্ত থাকে ?

উত্তর:


24

আমার সেটআপের সম্পর্কিত অংশগুলি এখানে:

  • বন্যমানু সক্ষম করুন,

    set wildmenu
    
  • ফাইলের নাম-সমাপ্তি এই ফাইল এবং ডিরেক্টরিগুলি এড়িয়ে যান,

    set wildignore+=*.swp,*.bak
    set wildignore+=*.pyc,*.class,*.sln,*.Master,*.csproj,*.csproj.user,*.cache,*.dll,*.pdb,*.min.*
    set wildignore+=*/.git/**/*,*/.hg/**/*,*/.svn/**/*
    set wildignore+=*/min/*
    set wildignore+=tags,cscope.*
    set wildignore+=*.tar.*
    
  • এটি কেস-সংবেদনশীল করুন,

    set wildignorecase
    
  • ফাইলগুলি তালিকাবদ্ধ করুন এবং ব্যবহারকারীকে ওয়াইল্ডম্যানু দিয়ে বেছে নিতে দিন,

    set wildmode=list:full
    
  • বর্তমান ফাইলের ডিরেক্টরি এবং ওয়ার্কিং ডিরেক্টরিের অধীনে থাকা প্রতিটি ডিরেক্টরি ভিমের সাথে যুক্ত করুন path,

    set path=.,**
    

    সতর্কবার্তা! পাথ বিকল্পটি অত্যন্ত কার্যকর। উপরের মান - .,**- আমার পক্ষে কাজ করে তবে আমি যে ভাষাগুলি ব্যবহার করি তার কোনও মানক গ্রন্থাগার নেই। সঠিক মান ওপর সম্পূর্ণভাবে নির্ভর করে আপনার চাহিদা।

  • একগুচ্ছ :findম্যাপিংস, বড় হাতের রূপগুলি আরও ভাল পারফরম্যান্সের জন্য বর্তমান ফাইলের ডিরেক্টরি থেকে অনুসন্ধান শুরু করে,

    nnoremap ,f :find *
    nnoremap ,F :find <C-R>=expand('%:p:h').'/**/*'<CR>
    nnoremap ,s :sfind *
    nnoremap ,S :sfind <C-R>=expand('%:p:h').'/**/*'<CR>
    nnoremap ,v :vert sfind *
    nnoremap ,V :vert sfind <C-R>=expand('%:p:h').'/**/*'<CR>
    

এবং এখানে এটির মতো দেখাচ্ছে:

:অনুসন্ধান


1
বাহ, এগুলি কয়েকটি দুর্দান্ত ম্যাপিং এবং সেটিংস। বিস্তারিত উত্তরের জন্য আপনাকে ধন্যবাদ।

3

দেখা :h :command-completion-custom

গিট দ্বারা তালিকাভুক্ত ফাইলগুলি সম্পূর্ণ করতে আমরা শেষ উদাহরণটি মানিয়ে নিতে পারি।

command! -nargs=1 -bang -complete=customlist,GitFindComplete
      \ GitFind edit<bang> <args>

function! GitFindComplete(ArgLead, CmdLine, CursorPos)
  let search_pattern = "*" . a:ArgLead . "*"
  let shell_cmd = "git ls-files " . shellescape(search_pattern)
  return split(system(shell_cmd), "\n")
endfunction

গিট দ্বারা তালিকাভুক্ত ফাইলগুলি খোলার জন্য আপনি এখন স্বয়ং-সমাপ্তি ব্যবহার করতে পারেন:

:GitFind ome_f<Tab>

নোট করুন যে একটি কাস্টম সমাপ্তির কার্যক্রমে, কেবলমাত্র সম্পূর্ণ হওয়া ফাইলগুলির তালিকা তৈরি করার চেয়ে আমাদের আরও বেশি কিছু করতে হবে। আমরা উচিত ফিল্টার বর্তমান কমান্ড যুক্তি তালিকা আপেক্ষিক ArgLead। এই উদাহরণে, আমরা gitআমাদের জন্য ফিল্টারিং করতে বলি, এটি *ওয়াইল্ডকার্ডগুলিতে মোড়ানো যুক্তিটি পাস করে ।


এটি একটি দুর্দান্ত কৌশল

1

আমার পদ্ধতিতে নিম্নলিখিত শেল ফাংশন এতে অন্তর্ভুক্ত ~/.bash_profile:

vimf() {
  vim $(find . -name $1)
}

তারপরে প্রকল্প গাছের গভীরে কোনও ফাইল খুলতে কেবল টাইপ করুন:

vimf some_file.c
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.