পাইথনের কীওয়ার্ড যেমন "স্ব" এর জন্য আমি কীভাবে "অনুপস্থিত" সিনট্যাক্স হাইলাইট করব?


12

আমি পাইথনের জন্য সিনট্যাক্স হাইলাইটিং ঠিক করার চেষ্টা করছি; আমার রঙগুলি বিভিন্ন ভিআইএম রঙের স্কিমগুলিতে এটি "দেখতে" কেমন দেখতে হবে তার স্ক্রিনশটগুলির চেয়ে আলাদা। এবং আপনি .rb (যা সঠিকভাবে প্রদর্শিত হয়) .py এর সাথে তুলনা করার পার্থক্যটি দেখতে পাচ্ছেন, যা দেখতে এটি বন্ধ বলে মনে হচ্ছে:

এখানে চিত্র বর্ণনা লিখুন

উদাহরণস্বরূপ, কীভাবে selfহাইলাইট করা হয় তা লক্ষ্য করুন । (এটি বেস 16 এ, তবে তুলনাটি অন্যান্য রঙের স্কিমগুলিতে সমান হবে)। সাধারণত, দেখে মনে হচ্ছে অবজেক্ট সিনট্যাক্স হাইলাইটিংটি ভুল।

কিছু জিনিস আমি চেষ্টা করেছি:

  1. সিনট্যাক্স স্ক্রিপ্টগুলি ভিএম লোডের দিকে তাকানো; নীচের উদাহরণে .py এবং .rb এর মধ্যে পার্থক্য কেবল হ'ল রুবি অবশ্যই ইনডেন্ট / রুবি.ভিম এবং সিনট্যাক্স / রুবি.ভিম পায় এবং পাইথন ইনডেন্ট / পাইথন.ভিম এবং সিনট্যাক্স / পাইথন.ভিম পায়। এই ফাইলগুলি হ'ম হোমব্রু ভিমে আসে।
  2. টার্মিনালের পরিবর্তে ম্যাকভিমে একই ফাইলগুলি লোড করা হচ্ছে (এটিર્મ 2) ভিএম; একই সমস্যা, ফাইলগুলি চিত্রের মতো দেখতে ঠিক একই দেখাচ্ছে।
  3. নতুন পাইথন.ভিম ফাইল যুক্ত করা হচ্ছে । .vim/afterস্ক্রিপ্ট হিসাবে ব্যবহৃত হলেও সমস্যাটি সমাধান করে না ।

কোন পরামর্শ স্বাগত জানাই; আমি কয়েক ঘন্টা ধরে এই বিষয়ে মাথা ঘুরছি, এবং কেন হাইলাইট করা প্রত্যাশা অনুযায়ী কাজ করছে না তা বুঝতে পারি না।


দ্রষ্টব্য যে পাইথনের প্রতীক নেই এবং আমি আপনাকে দৃ strongly়ভাবে নতুন কোডের জন্য পাইথন 3 সিনট্যাক্স ব্যবহার করার পরামর্শ দিচ্ছি।
মার্টিন টর্নয়েজ

উত্তর:


12

সংশ্লেষ হাইলাইট কিভাবে সংক্ষেপে কাজ করে:

  • ইন syntax/<filetype>.vimসিনট্যাক্স নিয়ম সংজ্ঞায়িত করা হয় :syntaxকমান্ড। এই কমান্ডটি ভাল, সিনট্যাক্সকে সংজ্ঞায়িত করে। এটি বলে "যদি পাঠ্যটি এই নিয়মিত প্রকাশের সাথে মেলে তবে এটি একটি স্ট্রিং" এবং আরও অনেক কিছু। এটি করতে, এটি একটি হাইলাইট গোষ্ঠী নির্ধারণ করে । এটি রঙ হিসাবে যেমন কিছু বলে না

  • :highlight"এই রঙগুলি দিয়ে এই গোষ্ঠীটি হাইলাইট করুন" বলে। এটি রঙিন স্কিমে সম্পন্ন হয়েছে , সিনট্যাক্স ফাইল নয়। ডিফল্ট হাইলাইট দলের গুচ্ছ আছে ( String, Function, Special, এবং তাই ঘোষণা) সমস্ত রঙ স্কিম সংজ্ঞায়িত উচিত যা।

    আপনি যদিও এই ডিফল্ট গোষ্ঠীগুলির মধ্যে কোনওভাবেই সীমাবদ্ধ নন এবং আপনি যতগুলি গোষ্ঠী তৈরি করতে পারেন (তবে ডিফল্ট সিনট্যাক্স ফাইল সাধারণত না)।

  • indent/<filetype>.vimফাইল স্বয়ংক্রিয় খাঁজ নিয়ন্ত্রণ করে। উদাহরণস্বরূপ রুবির ক্ষেত্রে এটি বলেছে "পরের রেখাটি defইনডেন্টেশন স্তর বৃদ্ধি করা উচিত" এবং "লাইন পরে endইনডেন্টেশন এক স্তর হ্রাস করা উচিত"। এটি রঙ বা সিনট্যাক্স হাইলাইট করে কিছুই করে না।


কেন বিভিন্ন প্রোগ্রামিং ভাষা হাইলাইট করা বিভিন্ন হয়? কিছুটা ব্যক্তিগত নন্দনতত্ত্ব এবং যারাই এটি লিখেছিল তার মতামতের কারণে। উদাহরণস্বরূপ রুবিতে Typeহাইলাইট গ্রুপটি শ্রেণীর নামের জন্য ব্যবহৃত হয়। তবে এটি Functionবা অন্য কিছু হতে পারে। এটা কেন Type? সম্ভবত কারণ লেখক ভেবেছিলেন যে এটি তার রঙিন স্কিমে আরও ভাল দেখাচ্ছে।

তবে আরও বড় কথা, ভাষাগুলির বিভিন্ন শব্দার্থবিজ্ঞান এবং সংবেদনশীলতা রয়েছে। রুবিতে selfএকটি বিশেষ কীওয়ার্ড। আপনি করতে পারবেন না self = "foo"বা def self()। এগুলি ত্রুটি। পাইথনের ক্ষেত্রে এটি হয় না । এটি কোনও বিশেষ বৈশিষ্ট্য ছাড়াই কেবল অন্য পরিবর্তনশীল। এরকম:

x = Object()
x.foo()

পাইথন সত্যই এটির "অনুবাদ" করেছেন:

Object.foo(x)

নামটি selfকেবল কনভেনশন (প্রায় সর্বজনীন গৃহীত) তবে আপনি নিজের পছন্দ মতো যেকোন নাম রাখতে পারেন; def x(this):বা def x(xxx):সমানভাবে বৈধ। আপনি নিজের নামটি selfযে কোনও জায়গায় ব্যবহার করতে পারেন; self = 'foo'এবং def self():পুরোপুরি ঠিক আছে।

আমি যুক্তি দিয়ে বলব যে এটি selfহাইলাইট করা উচিত নয়, কারণ এটি কোনও বিশেষ কীওয়ার্ড নয়, বা পূর্বনির্ধারিত পরিবর্তনশীল (যেমন str)ও নয়। selfসিনট্যাক্স ফাইলে শব্দের কোনও চিহ্ন নেই , সুতরাং দেখে মনে হচ্ছে এটির লেখক একই যুক্তি করেছেন :-)


আপনি যদি selfহাইলাইট করতে চান তবে আপনাকে এর জন্য একটি সিনট্যাক্স বিধি তৈরি করতে হবে:

:syn keyword pythonBuiltin self

pythonBuiltinগ্রুপের নাম ইতিমধ্যে ডিফল্ট সিনট্যাক্স ফাইলে সংজ্ঞায়িত করা হয় এবং এর সাথে লিঙ্কযুক্ত নেই Functionহাইলাইট গ্রুপ। একটি নতুন হাইলাইট গ্রুপ ব্যবহার করতে, এর মতো কিছু ব্যবহার করুন:

:syn keyword pythonSelf self
:highlight def link pythonSelf Special

এই পরিবর্তনগুলি করতে আপনি কেবল আপনার ভিএমআরসি ফাইলটিতে আটকে রাখতে পারবেন না। সিনট্যাক্স ফাইল এটিকে ওভাররাইড করবে। পরিবর্তে আপনার এটি সিনট্যাক্স ফাইল লোডের পরে চালানো দরকার যা আপনি দুটি উপায়ে করতে পারেন:

  1. একটি FileTypeস্বতঃসিএমডি ব্যবহার করুন :

    augroup python
        autocmd!
        autocmd FileType python
                    \   syn keyword pythonSelf self
                    \ | highlight def link pythonSelf Special
    augroup end
    
  2. ব্যবহার করুন after-directory, ~/.vim/after/syntax/python.vim:

    syn keyword pythonSelf self
    highlight def link pythonSelf Special
    

উভয় পদ্ধতি কার্যকরভাবে একই। আপনি যেটিকে পছন্দ করুন ব্যবহার করুন।

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