ভিআইএম-এ স্বয়ংক্রিয়ভাবে কোনও নতুন নির্মিত ফাইলের মাথায় কিছু স্ট্রিং যুক্ত করবেন?


4

নির্দিষ্ট করার জন্য, আমি যা করতে চাই তা হ'ল:

  • যদি আমি তৈরি xxx.php, #!/usr/bin/env phpফাইল প্রথম লাইন হতে হবে
  • যদি আমি তৈরি xxx.py, #!/usr/bin/env pythonপ্রথম যোগ করা হবে।

আমি কিভাবে এই কাছে যেতে পারি? ধন্যবাদ!

উত্তর:


9

কিছু অনুসন্ধান কাজের পরে, আমি এসওতে একটি পোস্ট পেয়েছি যা টেমপ্লেটগুলি ব্যবহার করে আমার সমস্যার সমাধান করতে পারে ope আশা করি এটি আপনার জন্য সহায়ক।

টেমপ্লেট তৈরি করুন pythontmp.txtএবং নীচের মতো phptmp.txtকিছু নির্দেশিকাতে (উদাহরণ ~/.vim/templates/:) তৈরি করুন

#!/usr/bin/env python(php)

নিম্নলিখিত সেটিং যুক্ত করুন .vimrc

autocmd bufnewfile *.py :0r ~/.vim/templates/pythontmp.txt
autocmd bufnewfile *.php :0r ~/.vim/templates/phptmp.txt

1
+1 স্ব উত্তরগুলি এসইউর পক্ষে ভাল (এটি করার সঠিক উপায় এটিও)।
এমএসডাব্লু

1

নিশ্চিত না যে আপনি এই আনসিসিস্টড করার জন্য ভিএম সেট আপ করতে পারবেন। আপনার জন্য এটি করার জন্য আপনি কোনও সহায়ক স্ক্রিপ্ট তৈরি করতে পারেন।

একটি লিনাক্স পরিবেশ অনুমান করা হচ্ছে ... এই স্ক্রিপ্টটি ফাইল এক্সটেনশানটি পরীক্ষা করবে এবং প্রয়োজনে ভিএম কল করার আগে শিরোনাম দিয়ে ফাইলটি তৈরি করুন।

#/bin/bash

type=`expr "\$1" : ".*\.\(.*\)"`   # Check the file extension

case "$type" in
    py) 
    interpreter=python;
    ;;
    php)
    interpreter=php;
    ;;
esac

if test ${interpreter+defined}; then echo "#!/usr/bin/env $interpreter" > $1 && /usr/bin/vim $1;
else /usr/bin/vim $1;
fi

তারপরে আপনি এই স্ক্রিপ্টটি ভিএম এর জায়গায় চালাতে পারেন।

alias vim='/path/to/script.sh'

1
আপনি ভিম প্লাগইন / স্ক্রিপ্টগুলিও তদন্ত করতে পারবেন
টিম কেন

হ্যাঁ আমি এখন এটাই করছি। এর ${interpreter+defined}অর্থ কি? আমাকে মুছে ফেলতে হবে +definedএবং এটি কাজ করতে হবে।
স্পোনস্ট

$ ইন্টারপ্রিটার ভেরিয়েবলটি সংজ্ঞায়িত করা হয়েছে কিনা তা পরীক্ষা করার জন্য এটি একটি প্রক্রিয়া (প্যারামিটার সম্প্রসারণ ব্যবহার করে)। আপনি একই প্রভাব ফেলতে কেবল সহজেই $ {দোভাষী + বেলা write লিখতে পারেন। defined {var + শব্দ} # যদি বর্ণটি সংজ্ঞায়িত করা হয় তবে "শব্দ" ব্যবহার করুন; অন্যথায়, কিছুই নয়
টিম কেন

1

এই বৈশিষ্ট্যটি সরবরাহ করে এমন অনেকগুলি প্লাগইন রয়েছে । কিছু আপনাকে এমনকি স্বয়ংক্রিয়ভাবে বিভিন্ন জিনিস কেটে দিতে দেয় বা এমন ফোল্ডার যেখানে আপনি নিজের নতুন ফাইল ( মিউ-টেমপ্লেট ) তৈরি করছেন তার উপর নির্ভর করে আপনার শিরোনামকে প্যারামিট্রাইজ করতে দেয় ।


হ্যাঁ, প্রচুর প্লাগইন যা বিল্টইনটিকে "অটোকিমডি" এর আশেপাশে সহজ করে তোলে। এটি সমস্ত "টেম্পলেট" এবং "কঙ্কাল" এর শর্তাবলী অনুসারে চলে।
আকির

1

আমি কাজটি করার জন্য একটি ভিএম ফাংশন সংজ্ঞায়নের পদ্ধতির পছন্দ করি, এইভাবে আরও জটিল জিনিসগুলি করা আরও সহজ হয়ে যায়। উদাহরণস্বরূপ, যদি sertedোকানো পাঠ্যটি ফাইলটির নামের উপর নির্ভর করে যা সাধারণত সি / সি ++ দিয়ে করা হয়। আমার সি / সি ++ এর মতো দেখতে:

autocmd BufNewFile *.{h,hpp} call <SID>insert_c_gates() 

...

function! s:insert_c_gates()
   let gatename = <SID>get_gate_name()
   execute "normal i#ifndef " . gatename
   execute "normal o#define " . gatename
   execute "normal Go#endif /* " . gatename . " */"
   normal kk
endfunction

Get_get_name () ফাংশনটি সম্পাদিত হওয়া ফাইলটির নাম থেকে গেটের নাম গঠন করে এবং আমি যে প্রকল্পে কাজ করছি তার উপর নির্ভর করে পরিবর্তিত হয় কারণ কিছু প্রকল্প চায় যে এটি একটি নির্দিষ্ট উপায়ে ফর্ম্যাট করা হোক।


আমি বুঝতে পারি যে আপনার সমাধানটি আরও কার্যকর though
স্প্যানস্ট

আসলে, সঙ্গে বাজানো :exe+ + :normal(/ :put) বেশ (দেখুন মত মিউ-টেমপ্লেট সমাধানের তুলনা বজায় রাখার জন্য কষ্টকর হয় code.google.com/p/lh-vim/source/browse/mu-template/trunk/after/... )। যতক্ষণ টেমপ্লেট এক্সপেন্ডার প্লাগইন সমর্থন "বাহ্যিক" ভিএমএল ফাংশনগুলিতে কল করে ততক্ষণ শিরোনাম উত্পাদনের ফাংশনটি বের করা বেশ সহজ।
লুক হার্মিটে

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

আমার ফান্টে যা ঘটছে তা হ'ল আমার কাছে একটি ফানক গেট_গেট_নাম রয়েছে যা ফাইলের পথের উপর নির্ভর করে আমি এর নামটি নির্ধারণ করি (আমি আমার প্রকল্পগুলি একটি প্রকল্পের ফোল্ডারের আওতায় সংগঠিত করে রাখি যাতে এই কাজটি করার অনুমতি দেয়)। তারপরে আমার নামটি একবার আমি কার্যকর করার জন্য কমান্ডগুলি ব্যবহার করে গেটগুলি সন্নিবেশ করান (খুব আদিম উপায়ে)। আমি এটি করার আরেকটি কারণ হ'ল আমি একটি আপডেটগেটস ফানক লিখেছিলাম যা বিদ্যমান ফটকগুলির সাথে একটি ফাইল দিয়েছে আমি তাদের যা চাই তা আপডেট করতে পারি (উদাহরণস্বরূপ, যদি আমি কোনও ফাইলের নাম পরিবর্তন করি তবে)। এটি আমাকে এমন ফাংশনগুলি পুনরায় ব্যবহার করতে দেয় যেখানে কোনও টেমপ্লেট / প্লাগইন সমাধান একই কাজ করা সহজ নাও হতে পারে।
নেগ_ইভি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.