কি set foldmethod=expr
এবং ব্যবহার 'foldexpr'
একটি তেজ স্ক্রিপ্ট অভিব্যক্তি ভাঁজ শুরু পয়েন্ট নির্ধারণ নির্ধারিত হবে।
set foldmethod=expr
set foldexpr=get(split(getline(v:lnum-1)),0,'')!=get(split(getline(v:lnum)),0,'')?'>1':'='
এটি এর চেয়ে জটিল দেখায়, কারণ আমরা সহজেই স্পেস ব্যবহার করতে পারি না :set
, তবে ফাঁকা স্থান এবং একটি নতুন লাইন বা 2 দিয়ে দেখে মনে হচ্ছে:
get(split(getline(v:lnum - 1)), 0, '') != get(split(getline(v:lnum)), 0, '')
\ ? '>1'
\ : '='
সংক্ষিপ্ত বিবরণ
মূলত এটি প্রতিটি লাইনের প্রথম শব্দটিকে আগের লাইনের সাথে তুলনা করে। যদি শব্দগুলি পৃথক হয় তবে লাইনটি ভাঁজটির শুরু >1
। অন্যথায় এটি একই ভাঁজ স্তর রাখে =
,।
বিশদ গৌরব
set foldmethod=expr
ভাঁজগুলি নির্ধারণ করার জন্য ভিমকে একটি ভিম স্ক্রিপ্ট এক্সপ্রেশন ব্যবহার করতে বলুন
'foldexpr'
বিকল্পটি ভিম স্ক্রিপ্ট এক্সপ্রেশন ধারণ করে
>1
যখন একটি ভাঁজ শুরু হবে এবং =
কখন ভাঁজ স্তরটি চলতে হবে তখন ফেরত পাওয়া তিনটি দিয়ে শর্তটির মূল্যায়ন
v:lnum
'foldexpr'
ভাঁজগুলি আপডেট করার জন্য যে চলমান লাইনটি চলছে is
- বর্তমান লাইন (
v:lnum
) এবং পূর্ববর্তী লাইন ( v:lnum - 1
) এর মাধ্যমে সামগ্রীগুলি পানgetline()
- এর মাধ্যমে প্রতিটি লাইন শব্দের মধ্যে বিভক্ত করুন
split()
get()
সদ্য বিভক্ত শব্দের প্রথম সূচক পেতে ব্যবহার করুন
''
একটি ফাঁকা রেখার ক্ষেত্রে একটি ডিফল্ট মান ব্যবহার করুন । যেমনget(words, 0, '')
- ত্রৈমাসিকের শর্ত অংশে পূর্ববর্তী লাইনের প্রথম শব্দের সাথে বর্তমান লাইনের প্রথম শব্দটির সাথে তুলনা করুন
দ্রষ্টব্য: এই পদ্ধতিতে খুব বড় নথি সহ কিছু কার্য সম্পাদনের সমস্যা থাকতে পারে
আরও সহায়তার জন্য দেখুন:
:h 'foldmethod'
:h 'foldexpr'
:h getline(
:h v:lnum
:h split(
:h get(