এই ফাংশনটি ব্যবহার করে দেখুন:
function! SignKeyword()
silent! sign undefine todo
sign define todo text=>> texthl=Search
g/\v\C(<TODO>|<FIXME>)/execute "sign place 9999 line=" . line('.')
\ . " name=todo buffer=" . bufnr('')
nohlsearch
endfunction
এখন কমান্ড লাইনে ফাংশনটি কল করুন:
:call SignKeyword()
অথবা ~/.vimrc
এটিকে কল করতে আপনার একটি ম্যাপিং যুক্ত করুন :
nnoremap <your mapping> :call SignKeyword()<cr>
অথবা একটি অটোক্যামড যুক্ত করুন। উদাহরণস্বরূপ, যদি আপনি চান যে কোনও ফাইলটি টাইপ করুন যা মার্কডাউন রয়েছে তখন খোলার সময় ফাংশনটি স্বয়ংক্রিয়ভাবে ডাকা হবে:
autocmd FileType markdown call SignKeyword()
ফাংশনের প্রথম লাইনটি silent! sign undefine todo
সাইন টুডোটি ইতিমধ্যে উপস্থিত থাকলে তা মুছে দেয়, যাতে আপনার চিহ্নগুলি যদি কোনও লাইন মুছে ফেলার বা যুক্ত করার পরে ভুল জায়গায় স্থানান্তরিত হয়, আপনি তাৎক্ষণিকভাবে ঠিক করার জন্য ফাংশনটি পুনরায় স্মরণ করতে পারেন।
দ্বিতীয় লাইনটি এমন একটি চিহ্নকে সংজ্ঞায়িত করে যার নাম টোডো, যার পাঠ্য >>
(আপনি নিজের পছন্দ অনুসারে এটি পরিবর্তন করতে পারেন) এবং যা অনুসন্ধান হাইলাইটিং গ্রুপ ব্যবহার করে (একই জিনিস)।
তৃতীয় লাইনে গ্লোবাল কমান্ড ব্যবহার করা হয়েছে:
:g/pattern/command
গ্লোবাল কমান্ড প্রতিটি লাইনে একটি কমান্ড কার্যকর করে যা একটি প্যাটার্নের সাথে মেলে।
এখানে প্যাটার্নটি হ'ল \v\C(<TODO>|<FIXME>)
যার অর্থ TODO বা FIXME শব্দটি সম্বলিত কোনও লাইন । রেজেক্সে
পরমাণু অন্তর্ভুক্ত থাকে \C
যাতে অনুসন্ধানটি কেসটিকে সম্মান করে (আপনার 'উপেক্ষা' বিকল্পটি কী তা নয়)। আপনি যদি অনুসন্ধানটি কেসটিকে সম্মান না করে চান তবে এটিকে পরিবর্তন করুন \c
।
যখনই এই জাতীয় লাইন পাওয়া যায় তখন ফাংশন দ্বারা নিম্নলিখিত লাইনটি কার্যকর করা হয়:
execute "sign place 9999 line=" . line('.')
\ . " name=todo buffer=" . bufnr('')
এটি :execute
নিম্নলিখিত আদেশের সামগ্রীটি ( আদেশ সহ) কার্যকর করে:
"sign place 9999 line=" . line('.') . " name=todo buffer=" . bufnr('')
স্ট্রিংটিতে দুটি ভিম অন্তর্নির্মিত ফাংশন রয়েছে: line()
এবং bufnr()
।
line('.')
গ্লোবাল কমান্ড দ্বারা কোনও ম্যাচ পাওয়া গেলে বর্তমান লাইনের bufnr('.')
সংখ্যাটি প্রদান করে এবং বর্তমান বাফারের সংখ্যাটি প্রদান করে।
সুতরাং উদাহরণস্বরূপ, যদি গ্লোবাল কমান্ড বাফার 5-তে 10 নং লাইনে কোনও মিল খুঁজে পায় তবে তা দেবে:
"sign place 9999 line=" . 10 . " name=todo buffer=" . 5
বিন্দুগুলি স্ট্রিংগুলিকে একত্রিত করে এবং তাই এটি শেষ পর্যন্ত মূল্যায়ন করবে:
"sign place 9999 line=10 name=todo buffer=5"
কোনটি হ'ল :sign
বাফার 5-তে 10 লাইনটিতে একটি সাইন রাখার কমান্ডটি
for
ফাংশনের চতুর্থ লাইনটি :nohlsearch
মিলিত নিদর্শনগুলির হাইলাইটিং অক্ষম করে।
সম্পাদনা: আমি রেজেক্স ঠিক করেছি, আসলটি ভুল ছিল। আমি লিখেছিলাম ^[TODO|FIXME]
তবে পরিবর্তে আমার মনে হয় এটি হওয়া উচিত \v\C(<TODO>|<FIXME>)
। অসুবিধার জন্য দুঃখিত, আমি এখনও ভিমস্ক্রিপ্ট শিখছি।
TODO
মন্তব্যটি মুছে ফেলা হলে কীভাবে সাইনটি সরিয়ে ফেলবেন?