একটি সাধারণ ভিএম সিনট্যাক্স হাইলাইট তৈরি করা


25

আমার কাছে একটি ডাটাবেস ফাইলের একটি সহজ ধরণের রয়েছে যা নিম্নলিখিত ফরম্যাটে কেবলমাত্র এন্ট্রি নিয়ে গঠিত

ভেরিয়েবল = মান

আমি এটির জন্য একটি সাধারণ ভিএম সিনট্যাক্স হাইলাইট তৈরি করতে এবং এটি নির্দিষ্ট ফাইল এক্সটেনশনের জন্য সেট করতে চাই

উদাহরণস্বরূপ, চলক অংশ হালকা নীল এবং মান অংশ হালকা লাল হতে পারে

আমি এটা googled এবং যেমন জিনিষ জুড়ে এসেছিল $vimruntime\syntax\, syntax set=, syntax match, এবং hiকীওয়ার্ড, কিন্তু এটা নিজেকে অবশেষে সেট আপ করতে পারে

সুতরাং আমি একটি খুব সহজ ভিআইএম কোড স্নিপেট চাই যা বাম এবং ডান হাতের সাথে মিলিয়ে এবং আলাদাভাবে রঙ করে এটি উপলব্ধি করতে পারে

উত্তর:


31

ধরে নিচ্ছেন আপনার ফাইলের এক্সটেনশানটি *.foo

  1. এই ফাইল এবং ডিরেক্টরিগুলি উপস্থিত না থাকলে তা তৈরি করুন:

    $HOME/.vim/ftdetect/foo.vim
    $HOME/.vim/syntax/foo.vim
    
  2. নিম্নলিখিতটি লিখুন $HOME/.vim/ftdetect/foo.vim:

    autocmd BufRead,BufNewFile *.foo set filetype=foo
    
  3. নিম্নলিখিতটি লিখুন $HOME/.vim/syntax/foo.vim:

    syntax match FooKey   /^[^=]\+/
    syntax match FooValue /[^=]\+$/
    
  4. নিম্নলিখিত লাইনগুলি একেবারে শেষে $HOME/.vimrc(বা কমপক্ষে কোনও লাইনের পরেcolorscheme ) রাখুন:

    highlight FooKey   ctermfg=cyan guifg=#00ffff
    highlight FooValue ctermfg=red  guifg=#ff0000
    
  5. আপনার কোথাও কোথাও নীচের লাইনটি রয়েছে তা নিশ্চিত করুন ~/.vimrc:

    syntax on
    

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

এটি কাজ করে, তবে আবার আমাকে নিজেই ftype=ভিএম-তে টাইম করে টাইপ করতে হবে , সেখানে কোনও fdetectডিরেক্টরি ছিল না $vimrnutime(আমি উইন্ডোতে আছি %programfiles(x86)%\vim\vim74\ ), আমি এটি তৈরি করেছি, তবে এখনও এটি প্রতিক্রিয়া দেখায় না

আপনি প্রয়োজন syntax onআপনার vimrc হবে।
রোমেনেল

20

সিনট্যাক্স স্ক্রিপ্ট

~/.vim/syntax/simple.vimনিম্নলিখিত বিষয়বস্তু সহ একটি ফাইল তৈরি করুন :

" Quit when a syntax file was already loaded.
if exists('b:current_syntax') | finish|  endif

syntax match simpleVar "\k\+" nextgroup=simpleAssignment
syntax match simpleAssignment "=" contained nextgroup=simpleValue
syntax match simpleValue ".*" contained

hi def link simpleVar Identifier
hi def link simpleAssignment Statement
hi def link simpleValue String

let b:current_syntax = 'simple'

এটি তিনটি সিনট্যাক্স উপাদানগুলির সাথে মেলে এবং ডিফল্ট রঙ সরবরাহ করে। একটি সাধারণত সুস্পষ্ট রঙগুলি সংজ্ঞায়িত করে না, তবে এর পরিবর্তে আপনার রঙের চামড়া দ্বারা সংজ্ঞায়িত ডিফল্ট হাইলাইটিং গোষ্ঠীর লিঙ্কগুলি । আপনি সমস্ত মাধ্যমে তালিকাভুক্ত করতে পারেন :hi। টুইট করার জন্য, পড়ুন :help :syntaxএবং :help usr_44.txtভিমের সাথে জাহাজের সিনট্যাক্স স্ক্রিপ্টগুলি দেখুন।

ফাইল টাইপ সনাক্তকরণ

এখনও অবধি, আপনাকে :set syntax=simpleসক্রিয় করতে ম্যানুয়ালি করতে হবে। এটি স্বয়ংক্রিয়ভাবে করতে, আপনাকে ভিমকে আপনার নতুন ফাইল টাইপ সম্পর্কে শিখাতে হবে ।

~/.vim/ftdetect/simple.vimনিম্নলিখিত বিষয়বস্তু সহ একটি ফাইল তৈরি করুন :

autocmd BufNewFile,BufRead *.simple setf simple

এটি ধরে নিয়েছে যে ফাইলগুলি ফাইলের নাম (সিপি। :help autocmd-patterns) এর মাধ্যমে চিহ্নিত করা যেতে পারে । আপনি পাথ (ফাইলের অবস্থান), এমনকি সামগ্রীগুলির ভিত্তিতেও সনাক্ত করতে পারেন। :help new-filetypeবিস্তারিত আছে

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