আমি কীভাবে আমার স্থানীয় ভিএমআরসি-তে অতিরিক্ত সিনট্যাক্স হাইলাইটিং বিধি যুক্ত করতে পারি?


11

আমি ফেডোরা এবং উইন 7 উভয়কেই জিভিএম ইনস্টল করেছি। আমি দেখতে পেয়েছি যে ফেডোরার ভিএম এবং জিভিএম উভয়ই সি কোডে ফাংশনের নামটি হাইলাইট করেনি, যখন উইন 7-এ জিভিএম এটি হাইলাইট করেছিল।

আমি win7 এ খুঁজে পেয়েছি, vim73/syntax/c.vimশেষে অতিরিক্ত লাইন রয়েছে:

syn match cFunction "\<[a-zA-Z_][a-zA-Z_0-9]*\>[^()]*)("me=e-2 
syn match cFunction "\<[a-zA-Z_][a-zA-Z_0-9]*\>\s*("me=e-1 
hi cFunction gui=NONE guifg=#B5A1FF

যদি আমি এই রেখাগুলি c.vimফেডোরায় যুক্ত করি তবে gvim ফাংশনটির নামটিও হাইলাইট করতে পারে।

বহনযোগ্যতা বজায় রাখতে, আমি কেবল .vimrcফাংশনটির নামটি হাইলাইট করার জন্য সংশোধন করতে চাই । তবে এই লাইনগুলি যুক্ত করার পরে .vimrc, এটি কার্যকর হয়নি work

সুতরাং, কেউ কি আমাকে সাহায্য করতে পারেন? আমি একটি অনুসন্ধান করেছি এবং ফিমের নামগুলি ভিমে হাইলাইট করার জন্য অনেকগুলি সমাধান রয়েছে। তবে এই লাইনগুলিকে কীভাবে কাজ করতে হয় সে সম্পর্কে আমি কেবল কৌতূহলী .vimrc। অনেক ধন্যবাদ!


5
~/.vim/after/syntax/c.vimপরিবর্তে এটি যুক্ত করার চেষ্টা করুন ।
মুরু

@ মুরু হ্যাঁ, এটি কাজ করে। তবে কীভাবে এটি যুক্ত করা যায় .vimrc?
tamlok

আপনাকে সম্ভবত এর মতো কিছু ব্যবহার করতে autocmd BufEnter *.c hl ...হবে তবে আপনার এটি রাখা উচিত after/syntax/c.vim। ভিমের যে কোনও আধুনিক সংস্করণ .vim/after/ডিরেক্টরিটি বুঝতে পারবে । উইন্ডোজে, পথটি হবে vimfiles/after/..., সুতরাং বহনযোগ্যতা কোনও সমস্যার বেশি হওয়া উচিত নয় (বিশেষত আপনি যদি কোনও প্লাগইন ব্যবহার করেন)।
মুড়ু

উত্তর:


14

তবে .vimrc এ এই লাইনগুলি যুক্ত করার পরে, এটি কার্যকর হয়নি।

এর কারণ হ'ল 'syntax'বিকল্পটি সেট করার সময় ভিম বিদ্যমান সিনট্যাক্স আইটেমগুলি সাফ করে । এটি করা হয়েছে কারণ পুরানো সিনট্যাক্স আইটেমগুলি রাখা কিছু অদ্ভুত পরিস্থিতির দিকে নিয়ে যায়; আপনি একটি বাফার যা আছে syntax=fooএবং ব্যবহার set syntax=barতারপর আপনি একটি বাফার, যার জন্য হাইলাইট সিনট্যাক্স রয়েছে তার সাথে শেষ করব উভয় foo এবং bar

যখন ভিম শুরু হয় এটি আপনার vimrcএকবারে (স্টার্টআপে) লোড করে, তবে প্রতিবার filetypeবা syntaxঅপশনগুলি সেট করা হলে এটি ফাইল টাইপ এবং সিনট্যাক্স ফাইলগুলি লোড করে , যা আপনার ভিআরসিআরটিতে সেট করা মানগুলি পুনরায় সেট করবে।

এমনকি এটি পুনরায় সেট না করা সত্ত্বেও, এটি কেবল আপনার ভিআরসিআরকে যুক্ত করা ভাল ধারণা হবে না, কারণ এটি কেবলমাত্র বাফার নয়, সমস্ত বাফারগুলিতে প্রয়োগ হয় syntax=c


নীচের পাঠ্যটি ইউনিক্স-ওয়াই সিস্টেমে ভিমকে ধরে নিয়েছে, তবে এটি নিওভিম এবং উইন্ডোজ ব্যবহারকারীদের জন্যও কাজ করবে:

  • নিওম ব্যবহারকারীদের ~/.vim/সাথে প্রতিস্থাপন করা উচিত ~/.config/nvim/
  • উইন্ডোজ ব্যবহারকারীদের ~/.vim/সাথে প্রতিস্থাপন করা উচিত %USERPROFILE%\vimfiles\

একটি সম্পূর্ণ ফাইল ওভাররাইড করা

কোনও কিছুর পরিবর্তন করার সহজতম উপায় হ'ল এটির উপরের পরিবর্তন । এটি করতে একটি ফাইল তৈরি করুন ~/.vim/<file>.vim

<file.vim>$VIMRUNTIME(সাব-ডিরেক্টরি সহ) সম্পর্কিত পাথ । আপনার উদাহরণে এটি হওয়া উচিত syntax/c.vim। এটি ফাইলের পরিবর্তে লোড হবে $VIMRUNTIME

এর ফলশ্রুতিটি হল এটি পরিবর্তন করা সহজ - প্রস্থানিত সিনট্যাক্স ফাইল সংশোধন করা কিছু সময় কিছুটা জটিলও হতে পারে। খারাপ দিকটি হ'ল আপনি সিস্টেম-ওয়াইড ফাইলটিতে ভবিষ্যতের কোনও আপডেট পাবেন না।

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

স্থানীয় সংযোজন

সিনট্যাক্স ফাইলগুলিতে স্থানীয় সংযোজন যুক্ত করার দুটি উপায় রয়েছে, সেগুলি কার্যকরীভাবে অভিন্ন এবং আপনি যে পদ্ধতিটি পছন্দ করেন আপনি তা ব্যবহার করতে পারেন।

Syntax autocmd

Syntaxস্বতঃসিএমডি ব্যবহার করুন :

augroup ft_c
    autocmd!
    autocmd Syntax c syn match cFunction "\<[a-zA-Z_][a-zA-Z_0-9]*\>[^()]*)("me=e-2 
    autocmd Syntax c syn match cFunction "\<[a-zA-Z_][a-zA-Z_0-9]*\>\s*("me=e-1 
    autocmd Syntax c hi cFunction gui=NONE guifg=#B5A1FF
augroup end

নোট করুন যে কয়েকটি কমান্ডের সাথে শৃঙ্খলাবদ্ধ হওয়া |এখানে সমস্যাযুক্ত, কারণ তারা :synকমান্ডের অংশ হিসাবে ব্যাখ্যা করতে ঝোঁক, কারণ আমি autocmd Syntax cবেশ কয়েকবার পুনরাবৃত্তি করেছি । বিকল্প একটি ফাংশন ব্যবহার করা হবে:

fun s:c()
    syn match cFunction "\<[a-zA-Z_][a-zA-Z_0-9]*\>[^()]*)("me=e-2 
    syn match cFunction "\<[a-zA-Z_][a-zA-Z_0-9]*\>\s*("me=e-1 
    hi cFunction gui=NONE guifg=#B5A1FF
endfun

augroup ft_c
  autocmd!
  autocmd Syntax c call s:c()
augroup end

সুবিধাটি হ'ল সমস্ত পরিবর্তনগুলি একটি একক ফাইলে অন্তর্ভুক্ত থাকতে পারে। অসুবিধাটি হ'ল এটি কিছুটা কুৎসিত, বিশেষত যদি আপনার অনেক পরিবর্তন হয়।

ডিরেক্টরি পরে

পরে ডিরেক্টরির ব্যবহার করুন: ~/.vim/after/<file>.vim

এটি হ'ল পরে লোড হবে <file>.vim, যেখানে <file.vim>পাথ $VIMRUNTIME(সাব-ডিরেক্টরিগুলি সহ) সম্পর্কিত। আপনার উদাহরণে এটি হওয়া উচিত syntax/c.vim

এছাড়াও দেখুন :help after-directory

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

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