আমি কি কোনও প্রকল্পের একটি নির্দিষ্ট ফোল্ডার উপেক্ষা করার জন্য ভিম সিটিআরএলপিপ প্লাগইন পেতে পারি?


17

তেজ Ctrlp প্লাগইন একটি উপায় বিশ্বব্যাপী নির্দিষ্ট ফোল্ডার নামের উপেক্ষা করার হয়েছে। উদাহরণ:

let g:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn)$'

তবে, আমার কাছে একটি উপেক্ষা নিয়ম রয়েছে যা একটি প্রকল্পের জন্য নির্দিষ্ট। আমি .gitignoreফাইলের মতো আরও কিছু চাই ।

আমার বিশ্বব্যাপী কনফিগারেশনটি পরিবর্তন না করে কোনও নির্দিষ্ট প্রকল্পে কোনও নির্দিষ্ট ফোল্ডারটিকে উপেক্ষা করার কোনও উপায় আছে কি?


আপনি কি প্লাগইনের ইস্যু ট্র্যাকার ব্যবহার করে দেখেছেন?
রোমেনেল

উত্তর:


20

একটি কাস্টম তালিকা কমান্ড ব্যবহার করুন

ফোল্ডারে ফাইলের তালিকা পেতে কোন কমান্ডটি ব্যবহার করতে হবে তা Ctrlp আপনাকে জানাতে দেয়। সুতরাং যদি আপনি নামের কিছু বাদ দিতে চান তবে আপনি এটি beets.txtকরতে পারেন:

let g:ctrlp_user_command = 'find %s -type f | grep -v "beets.txt"'

এটি বৈশ্বিক, তবে এটি উত্তরের দিকে নির্দেশ করতে শুরু করে: আপনার নিজের শেল কমান্ড সরবরাহ করুন।

আরও ভাল, Ctrlp আপনাকে চিহ্নিতকারীদের সাথে একাধিক শেল কমান্ড সরবরাহ করতে দেয় যার অর্থ "যদি আপনি এই ডিরেক্টরিটিকে মূল ডিরেক্টরিতে দেখতে পান তবে এই কমান্ডটি ব্যবহার করুন।"

আমি এটি খুঁজে পেয়েছি :help ctrlpএবং কোনও বিষয়ে লেখকের মন্তব্যের ভিত্তিতে কিছুটা সংশোধন করেছি।

let g:ctrlp_user_command = {
  \ 'types': {
    \ 1: ['.git', 'cd %s && git ls-files --cached --exclude-standard --others'],
    \ 2: ['.hg', 'hg --cwd %s locate -I .'],
    \ },
  \ 'fallback': 'find %s -type f'
  \ }

এই উপায়ে: "আপনি কি দেখতে পান, তাহলে .gitফোল্ডারে, ব্যবহার git ls-files...। অন্যথায়, যদি আপনি দেখতে .hg, ব্যবহার hg --cwd..., অন্যথায় একটি নিয়মিত ব্যবহার find।"

সুতরাং, একটি প্রকল্পে একটি নির্দিষ্ট ফোল্ডার উপেক্ষা করার জন্য, একটি কমান্ড তৈরি করুন যা সেই ফোল্ডারটিকে উপেক্ষা করবে, তারপরে সেই প্রকল্পে একটি অনন্য মার্কার স্থাপন করুন যাতে আপনি আপনার বিশেষ কমান্ডটি এখানে ব্যবহার করতে চান Ctrlp করতে দেয়

(আমার ক্ষেত্রে, আমি আসলে থাকা ফাইলগুলি উপেক্ষা করতে চেয়েছিলাম .gitignore, সুতরাং git ls-filesউপরের কমান্ডটি আমার পক্ষে কাজ করে))


এটি দুর্দান্ত, এই উত্তরের জন্য আপনাকে অনেক ধন্যবাদ।
ডেনিস

গিট-সি% s এলএস-ফাইল - ক্যাশেড - এক্সক্লুড-স্ট্যান্ডার্ড - ভাইদের গিটের জন্য কাজ করা উচিত।
অরুণপ্রসাদ রাজকুমার

11

আপনি যদি CtrlP- র জন্য সিলভার অনুসন্ধানকারী ব্যাকএন্ড ব্যবহার করছেন (যা আরও দ্রুত) তবে কেবলমাত্র .agignoreএকই প্রকল্পে আপনার প্রকল্প ডিরেক্টরিতে একটি ফাইল যুক্ত করুন .gitignore:

.git/
.hg/
.svn/

বিকল্পভাবে, একটি গ্লোবাল ~/.agignoreফাইল রাখুন।

এটিতে আপনার সাথে ব্যাকএন্ড হিসাবে সিলভার অনুসন্ধানকারী যুক্ত করুন .vimrc

let g:ctrlp_user_command = 'ag %s -l --nocolor --hidden -g ""'

1
এই পোস্ট করার জন্য ধন্যবাদ। অন্য ডেটা পয়েন্ট যোগ করতে: আমি এটি অভিযোজিত if executable("ag") let g:ctrlp_user_command = 'ag %s -l --nocolor --depth 8 -g ""' endif । গভীরতার সীমাটি যদি আমার বাড়ির ফোল্ডারে কোনও ফাইল সম্পাদনা করার সময় আমি ঘটনাক্রমে সিটিআরএল-পি আঘাত করি তবে এর জন্য দরকারী। আমি দেখতে পেয়েছি যে লুকানো পতাকাটিতে .git /
এরিক হু

6

একটি ফাইলের মধ্যে ইচ্ছাকৃত অনক্রাতিত ফাইলগুলি নির্দিষ্ট করে

এটির .gitignore(নাথান গ্রেপ সমাধানে ভিত্তি করে) ফাইল দিয়ে সমাধান করার জন্য , আমি একটি ফাইল তৈরি .ctrlpignoreকরেছি এবং প্যাটার্নগুলি এড়ানো উচিত যা লাইন দ্বারা পৃথক করে:

node_modules/
\.log$
...

এবং আমার ctrlp কনফিগারেশন:

let g:ctrlp_user_command = 'find %s -type f | grep -v "`cat .ctrlpignore`"'

হয়তো .gitignoreনিজেই সিটিআরএলপি-তে ফাইলগুলি উপেক্ষা করার জন্য ব্যবহার করা যেতে পারে, প্রায় একই জিনিসটি করার জন্য কোনও নতুন ফাইল তৈরি করার প্রয়োজন নেই।


আমি এই স্নিপেটটি যুক্ত করেছি তবে এটি ওভারাল সিটিআরএলপি আচরণটি ভঙ্গ করে, যদি আমি আদেশকন্ট্রোলার টাইপ করি তবে এটি কেবল _ স্পেক ফাইল খুঁজে পায়, কোনও আসল অর্ডার_কন্ট্রোলআরবি ফাইল নেই।
jedi

1

ওয়াগনার অ্যান্ড্রেড যেমন বলেছিলেন, পৃথক পৃথক ব্যবহার করা .ctrlpignoreভাল ধারণা হবে।

আরও শক্তিশালী এবং সুবিধাজনক ভিম সেটিংটি হ'ল:

let g:ctrlp_user_command = 'cd %s;
  \ commonfilter="\.(jpg|bmp|png|jar|7z|zip|tar|gz|tgz|bz)$";
  \ if [ ! -r ".ctrlpignore" ]; then
  \   find . -type f | grep -Evi "$commonfilter";
  \ else
  \   find . -type f | grep -vF "$(cat .ctrlpignore)" | grep -Evi "$commonfilter";
  \ fi'

.ctrlpignoreসিআরটিএলপি দ্বারা মূল ডিয়ার হিসাবে স্বীকৃত এমন কোনও দিরের মধ্যে রাখা যেতে পারে। এখানে একটি উদাহরণ দেওয়া আছে, প্রতিটি লাইন দিয়ে শুরু হচ্ছে./

vim ~/.ctrlpignore

./Desktop
./R
./.vim
./.local/lib
.....

বিঃদ্রঃ:

  1. grep -Fপ্যাটার্ন ব্যাখ্যা করবে, প্রাক্তন। './.tmp', একটি স্থির স্ট্রিং হিসাবে যদি আপনি আপনার './ptmp' ফিল্টার না করতে চান। এখনও কিছু তুচ্ছ বাগ রয়েছে: './.tmp' এছাড়াও './.tmp2' ফিল্টার আউট করবে। এটা ভুলে যাও, আমি পছন্দ করি না\.

  2. g:ctrlp_custom_ignoreg:ctrlp_user_commandসেট করা থাকলে তা উপেক্ষা করা হবে । এগুলি আরও জটিলভাবে করা যেতে পারেg:ctrlp_user_command

  3. কালো-তালিকার পরিবর্তে সাদা তালিকাও সম্ভব is পৃথক স্ক্রিপ্টে প্রয়োগ করা হলে আরও সুবিধাজনক

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