কোনও নির্দিষ্ট ফাইল ভিমস্ক্রিপ্টে রয়েছে কীভাবে তা সনাক্ত করতে পারি?


105

বর্তমান ডিরেক্টরিতে কোনও ফাইল বিদ্যমান কিনা তা পরীক্ষা করতে আমি ভিমস্ক্রিপ্টে একটি মার্জিত উপায় খুঁজছি।

আমি নীচের কোডটি নিয়ে এসেছি তবে আমি নিশ্চিত নই যে এটি সর্বাধিক মার্জিত সমাধান (যদি ফাইল উপস্থিত থাকে তবে আমি একটি ভিম বিকল্প সেট করব)। ফাইলনামের সাথে অন্য তুলনা না করার কোনও উপায় আছে কি?

সম্ভবত ভিমের থেকে আলাদা বিল্ট-ইন ফাংশন ব্যবহার করবেন?

:function! SomeCheck()
:   if findfile("SpecificFile", ".") == "SpecificFile"
:       echo "SpecificFile exists"
:   endif
:endfunction

উত্তর:


138

কিছুটা অনুসন্ধান করে vim manআমি এটি পেয়েছি, যা মূলটি থেকে আরও ভাল দেখাচ্ছে:

:function! SomeCheck()
:   if filereadable("SpecificFile")
:       echo "SpecificFile exists"
:   endif
:endfunction

4
স্পেসিফিক ফাইলে যদি বিদ্যমান থাকে তবে তা বর্তমান ব্যবহারকারীর জন্য পঠনযোগ্য নয়। হয়তো ফাইন্ডফিলই ভাল।
পিপিএন

2
জন্য সহায়তা filereadableআপনি ব্যবহার করতে পারেন উল্লেখ globআপনি পাঠযোগ্যতা যত্ন সম্পর্কে না।
সুমুডু ফার্নান্দো

8
যদি ফাইল পড়তে সক্ষম হয় (প্রসারিত ("~ / .vim / বান্ডেল / vundle / README.md")) যাক g: hasVundle = 1 endif
চিন্তাবিদ 3

@ মাইটাফি এটি একটি দুর্দান্ত মন্তব্য, এটির আরও দৃশ্যমানতা দেওয়ার জন্য আমি এর ভিত্তিতে একটি উত্তর যুক্ত করেছি , তবে আপনি যদি creditণ চান তবে নিজের উত্তর যুক্ত করতে নির্দ্বিধায় থাকবেন এবং আমি আমার মুছে ফেলব।
icc97

56

কিছু মন্তব্য তার পরিবর্তে filereadableএবং ব্যবহার সম্পর্কে উদ্বেগ প্রকাশ করে glob। এটি বিদ্যমান এমন একটি ফাইল থাকার বিষয়টি সম্বোধন করে, তবে অনুমতিগুলি এটি পড়তে বাধা দেয়। আপনি যদি এই জাতীয় কেসগুলি সনাক্ত করতে চান তবে নিম্নলিখিতগুলি কাজ করবে:

:if !empty(glob("path/to/file"))
:   echo "File exists."
:endif

আমি পেতে E116: Invalid arguments for function। প্লাগিনের জন্য যাচাই করতে আপনি কীভাবে হোম ডিরেক্টরি সম্পর্কিত ফাইলটি নির্দিষ্ট করবেন? ( এখানে আরও দেখুন )
স্কেজ

আপনি কি ব্যবহারকারী হোম ডিরেক্টরি সম্পর্কে কথা বলছেন? আমি কেবল একটি অনুমান ~করব তবে আমি ইতিবাচক নই। আপনি যখন ত্রুটি পেয়েছেন তখন আপনি কোন যুক্তি সরবরাহ করেছিলেন?
ব্রায়ানমার্নসগুলি দেখায়

1
আমি এটি দিয়ে চেষ্টা করেছি ~এবং এটি ত্রুটি দিয়েছে। এখন আমি আবার চেষ্টা করেছি এবং এটি কাজ করে ... :-)
স্কেজ

1
সম্ভবত কেবল একটি টাইপো বা কিছু। তবে আনন্দিত এটি আপনার পক্ষে কাজ করেছে!
13'4 এ ব্রায়ানমার্নস বার্নস্মরণ করে

অন্যান্য উত্তরের মতো নয়, এটি ডিরেক্টরিতেও কাজ করে বলে মনে হচ্ছে।
ব্রায়ান ম্যাকচ্যাটন

12

গ্রহণযোগ্য উত্তরে মেটাফির মন্তব্যে আরও কিছু দৃশ্যমানতা দেওয়া :

যদি ফাইল পড়তে সক্ষম হয় (প্রসারিত ("~ / .vim / বান্ডেল / vundle / README.md")) যাক g: hasVundle = 1 endif

filereadableযা প্রয়োজন তা হ'ল তবে আপনার expandব্যবহারে ব্যবহার করা উচিত একটি অতিরিক্ত সহজ পদক্ষেপ step~

:function! SomeCheck()
:   if filereadable(expand("SpecificFile"))
:       echo "SpecificFile exists"
:   endif
:endfunction 

উদাহরণ স্বরূপ

  • :echo filereadable('~/.vimrc')দেয় 0,
  • :echo filereadable(expand('~/.vimrc')) দেয় 1
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.