টি এল; ডিআর:
এটি ভিমের পিএইচপি এবং এইচটিএমএল সিন্ট্যাক্স ফাইলগুলিতে সংজ্ঞায়িত করা হয়েছে। সিএসএসের জন্য কীভাবে বিধি যুক্ত করতে হয় তা দেখতে বিভাগে ঝাঁপুন এবং আমি কীভাবে এগুলিতে যুক্ত করব? নীচে, বা এটি কীভাবে কাজ করে তার ব্যাখ্যার জন্য পড়ুন।
এই সিনট্যাক্স বিধিগুলি কোথায় সংজ্ঞায়িত হচ্ছে?
জাভাস্ক্রিপ্ট হেরেডোকটি ভিমের সিনট্যাক্স contains
1 বৈশিষ্ট্যটি ব্যবহার করে হাইলাইট করা হয়েছে যা সিনট্যাক্স গোষ্ঠীগুলিকে অন্যান্য সিনট্যাক্স গ্রুপ ধারণ করতে দেয় contain
এটি কোথায় সংজ্ঞায়িত হয়েছে তা সন্ধান করতে প্রথমে পিএইচপি-র জন্য সিনট্যাক্স হাইলাইটিং ফাইলটি খুলুন:
:e $VIMRUNTIME/syntax/php.vim
এখন সম্ভবত সম্ভবত সিনট্যাক্স ফাইলটি "জাভাস্ক্রিপ্ট" স্ট্রিংয়ের একটি ম্যাচের উপর ভিত্তি করে জাভাস্ক্রিপ্ট হেরেডোকটি সন্ধান করছে, সুতরাং এটির জন্য অনুসন্ধান করা যাক:
/javascript
তৃতীয় ম্যাচটি এই মন্তব্য:
" including HTML,JavaScript,SQL even if not enabled via options
প্রতিশ্রুতিবদ্ধ মনে হচ্ছে! প্রাসঙ্গিক বাক্য গঠন রেখাটি একবার দেখে নেওয়া যাক:
syn region phpHereDoc matchgroup=Delimiter
\ start="\(<<<\)\@<=\(\"\=\)\z(\(\I\i*\)\=\(javascript\)\c\(\i*\)\)\2$"
\ end="^\z1\(;\=$\)\@="
\ contained
\ contains=@htmlJavascript,phpIdentifierSimply,phpIdentifier,phpIdentifierComplex,phpBackslashSequences,phpMethodsVar,@Spell
\ keepend extend
( সহজ পড়ার জন্য লাইন ধারাবাহিকতা যুক্ত করা হয়েছে )
ঠিক আছে, সুতরাং এই সিনট্যাক্স অঞ্চলটি জাভাস্ক্রিপ্ট হেরেডোককে একটি সংশ্লেষিত নিয়মিত অভিব্যক্তির সাহায্যে খুঁজে পায় এবং যুক্তির মধ্যে @htmlJavascript
সিনট্যাক্স cluster
2 যুক্ত করে জাভাস্ক্রিপ্টটিকে অঞ্চলটির মধ্যে হাইলাইট করার অনুমতি দেয় contains
।
তবে সিএসএস হেরডোকসের সাথে সম্পর্কিত কোনও সংজ্ঞা নেই! একটি যোগ করতে দেয়। সুতরাং পরিবর্তন করার প্রথম জিনিসটি হ'ল start
নিয়মিত প্রকাশ। কেবলমাত্র পরিবর্তন javascript
মধ্যে css
:
start="\(<<<\)\@<=\(\"\=\)\z(\(\I\i*\)\=\(css\)\c\(\i*\)\)\2$"
এটা সহজ!
তবে আমরা জাভাস্ক্রিপ্টটি আমাদের সিএসএস হেরডোকটিতে হাইলাইট করতে চাই না। সুতরাং আমাদের @htmlJavascript
সিএসএস সমতুল্যতেও পরিবর্তন করতে হবে। কিন্ত হয় সিএসএস সমতুল্য? (আপনি অনুমান করতে সক্ষম হতে পারেন, তবে আসুন নিশ্চিত হওয়ার জন্য গতিগুলি অনুসরণ করুন))
এটি কোথায় সংজ্ঞায়িত হয়েছে তা দেখতে htmljavascript
3 টি অনুসন্ধান করতে দেয় :
/htmljavascript
হুম। অন্য কোনও ফলাফল নেই। এটি অন্য কোথাও সংজ্ঞায়িত করা উচিত! আসুন আমরা ফাইলের শীর্ষে এক ঝলক দেখে নিই যে আমাদের কোনও অন্তর্ভুক্ত রয়েছে তা খুঁজে পেতে পারে:
runtime! syntax/html.vim
দেখে মনে হচ্ছে এটি 4 হতে পারে ।
:e $VIMRUNTIME/syntax/html.vim
এই ফাইলটিতে আবার অনুসন্ধান চালান, এবং আমরা এই লাইনটি 5 পেয়েছি :
syn cluster htmlJavaScript add=@htmlPreproc
সুতরাং এইচটিএমএল জাভা স্ক্রিপ্ট একটি cluster
, সংজ্ঞায়িত html.vim
। সিএসএসের জন্য কি আমরা ব্যবহার করতে পারি তেমন কোনও ক্লাস্টার রয়েছে?
/htmlcss
হা!
syn include @htmlCss syntax/css.vim
তাই আমরা ঠিক প্রতিস্থাপন করা প্রয়োজন @htmlJavascript
সঙ্গে @htmlCss
এ contains
যুক্তি:
contains=@htmlCss,phpIdentifierSimply,phpIdentifier,[...]
এবং আমি কীভাবে তাদের সাথে যুক্ত করব?
ফাইলের নীচে পুরো সিনট্যাক্স কমান্ডটি সংরক্ষণ করুন ~/after/syntax/php.vim
যাতে এটি পিএইচপি বাকী বাক্য সিনট্যাক্স প্রসেসিংয়ের পরে চালিত হয় এবং আপনি শেষ করেছেন!
syn region phpHereDoc matchgroup=Delimiter
\ start="\(<<<\)\@<=\(\"\=\)\z(\(\I\i*\)\=\(css\)\c\(\i*\)\)\2$"
\ end="^\z1\(;\=$\)\@="
\ contained
\ contains=@htmlCss,phpIdentifierSimply,phpIdentifier,phpIdentifierComplex,phpBackslashSequences,phpMethodsVar,@Spell
\ keepend extend
1: :help :syn-contains
বিশদ জন্য দেখুন।
2: দেখুন :help :syn-cluster
।
3: আমি 'ignorecase'
চালু আছে। এটি ছাড়াই, আপনাকে
4 htmlJavascript
বা সন্ধান করতে হবে \chtmljavascript
: আসলে, ভিম সিনট্যাক্স ফাইলগুলিতে ব্যবহৃত নামকরণ স্কিমের উপর ভিত্তি করে, আমরা সম্ভবত htmlJavascript
একা নামের উপর ভিত্তি করে এটি সন্ধান করতে পারতাম ।
5: "জাভাস্ক্রিপ্ট" দিয়ে আলাদাভাবে মূলধন হয়েছে, এবার। ভাগ্যবান আমরা 'ignorecase'
সুইচ চালু করেছি , তাই না?
// This should be syntax-highlighted
একটি কার্যকর সিএসএস মন্তব্য নয়, এবং তাই সিনট্যাক্সটি মন্তব্য ছাড়া অন্য কিছু হিসাবে হাইলাইট হওয়া উচিত। সিএসএস কেবল/* */
বহু-লাইন মন্তব্যগুলিকে সমর্থন করে ।//
আপনি যদি সাস বা স্টাইলাসের মতো প্রিপ্রসেসর ভাষা ব্যবহার করেন তবে একক-লাইন মন্তব্যগুলি সমর্থন করা হয়।