আমি দেখেছি যে আপনি বর্তমান বাইট অফসেটটি স্ট্যাটাসলাইন ব্যবহার করে প্রদর্শন করতে পারেন %o
তবে আমি কোনও ফাংশন বা কমান্ড খুঁজে পাইনি যা এর মতো করে। ব্যবহারিকভাবে বর্তমান বাইট অফসেট পাওয়ার কোনও উপায় আছে কি?
আমি দেখেছি যে আপনি বর্তমান বাইট অফসেটটি স্ট্যাটাসলাইন ব্যবহার করে প্রদর্শন করতে পারেন %o
তবে আমি কোনও ফাংশন বা কমান্ড খুঁজে পাইনি যা এর মতো করে। ব্যবহারিকভাবে বর্তমান বাইট অফসেট পাওয়ার কোনও উপায় আছে কি?
উত্তর:
এটা চেষ্টা কর:
function! FileOffset()
return line2byte(line('.')) + col('.') - 1
endfunction
এটি ফাইলে 1-ভিত্তিক অফসেটটি ফেরত দেয় যা একই হিসাবে %o
রয়েছে statusline
। 0-ভিত্তিক অফসেট পেতে আপনি অবশ্যই 1 টি বিয়োগ করতে পারেন।
:help col()
: তিনি [T] ফলাফলটি কোনো সংখ্যা, যা {expr} দিয়ে নির্দিষ্ট কলাম অবস্থানের বাইট সূচক হয় । আমি এটি গ্রহণ করি এটি 1-ভিত্তিক বাইট অফসেট ...
abcäb
? (আমি চেক করি নি)
অন্যান্য উত্তর আমার জন্য কাজ করে নি যখন আমি লাইনে শেষ ছাড়া একটি বাইনারি ফাইল খোলা। এটি ইওল ছাড়াই বাইনারি ফাইলটিতে বাইটগুলি গণনা করার ক্ষেত্রে ভিমে একটি বাগ রয়েছে বলে মনে হয়। (সম্পাদনা: হ্যাঁ, এটি একটি বাগ ছিল I আমি একটি প্যাচ জমা দিয়েছি , যা .4.৪.78৮১ এ গৃহীত হয়েছিল )।
পুরানো ভিম সংস্করণগুলিতে বাগের জন্য অ্যাকাউন্টিং করার সময় বাইট অফসেটটি সন্ধান করতে:
let offset = line2byte(line('.')) + col('.') - 1
if version < 781 && &l:binary == 1 && &l:eol == 0
" Vim prior 7.4.781 had a bug where the line count is off by 1 or 2.
" See https://groups.google.com/forum/#!msg/vim_dev/zX45zm-cnc0/-BWjjh5tlX8J
let offset += 1
let offset += line('.') == 1
endif
এই বাগটি %o
উদাহরণস্বরূপ নির্দিষ্টকারীকেও প্রভাবিত করে rulerformat
।
col('.')
আসলে লাইনে অফসেট বাইটটি ফেরত দেয়? সর্বশেষে আমি দেখেছিলাম, এটি কেবল কার্সার কলামটি দেখিয়েছে।