আমি কীভাবে বর্তমান বাফারের এনকোডিংটি ভিমে খুঁজে পাব?


89

বলুন আমি vim (বা gvim) দিয়ে কিছু ফাইল সম্পাদনা করছি। ফাইলটির এনকোডিং সম্পর্কে আমার কোনও ধারণা নেই এবং আমি এটি ইউটিএফ -8 বা আইএসও -8859-1-এ আছে কিনা তা জানতে চাই বা যা কিছু আছে? আমি কি কোনওভাবে ভিমকে বলতে পারি কী এনকোডিং ব্যবহৃত হয় তা আমাকে দেখাতে?

উত্তর:


104

ফাইলেনকোডিং সেটিংটি বর্তমান বাফারের এনকোডিংটি দেখায়:

:set fileencoding
fileencoding=utf8

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

আপনি 'এনকোডিং' সেটিংস সহ একটি নির্দিষ্ট এনকোডিং প্রয়োগ করতে পারেন। দেখুন :help encodingএবং :help fileencodingজন্য কিভাবে সম্পাদক এই সেটিংস পরিচালনা তেজ হবে। তালিকাভুক্তদের উপর ভিত্তি করে ভিআইএম সনাক্ত করার চেষ্টা করতে আপনি আপনার ভিএমআরসিতে বেশ কয়েকটি ফাইলেনকডিং সেটিংসও যুক্ত করতে পারেন।


1
পারফেক্ট। কিছুটা হলেও স্বজ্ঞাত পাল্টা। ধন্যবাদ!
innaM

7
দুর্ভাগ্যজনকভাবে, সঠিক নয়। ভিমের জন্য আপনি যে ফাইলটি পড়ছেন তার এনকোডিং খুঁজে পাবেন না । এটি ফাইলটিতে লেখা নেই। এটি কেবলমাত্র ফাইলের উপলব্ধ অক্ষরের উপর নির্ভর করে অনুমান করতে পারে। উদাহরণস্বরূপ "abcdef" পাঠ্যযুক্ত একটি ফাইল বেশ কয়েকটি এনকোডিংগুলিতে থাকতে পারে, যেহেতু কার্যত সকলেই এই অক্ষরগুলিকে সমর্থন করে তবে "šđčćž" সহ একটি ফাইল সম্ভবত সিপি 1252 এ থাকবে। সুতরাং, আপনি কোথাও থেকে এনকোডিংটি পড়ছেন না, তবে অনুমান করছেন যে এটি কীভাবে এনকোডিং হতে পারে, এবং এটি সঠিকভাবে প্রদর্শন করার উপর ভিত্তি করে।
দাড়কাক

6
আপনি এখানে যা করছেন তা ফাইলের সামগ্রীগুলির পর্যবেক্ষণের ভিত্তিতে স্পষ্টভাবে এনকোডিংটি সেট করছে। আপনি যদি ভিএম এর জন্য কয়েকটি এনকোডিং চেষ্টা করে দেখতে চান, কোনও ফাইল খোলার সময়, তাদের বেশিরভাগটিকে আপনার _vimrc- এ অপশনে রেখে দিন।
দাড়কাক

@ ওলিগাস, মতামতের জন্য ধন্যবাদ, আমি এর উপর কিছুটা পরিষ্কার হওয়ার জন্য উত্তরটি আপডেট করেছি (আশা করি!)
জিতিমারম্যান

2
সম্ভবত মূল্য উল্লেখ করে BOMs 1. হয়) UTF-8- অনন্য নয় - যদিও হল UTF-8 এর, অন্যদের BOMs থেকে 2. স্বতন্ত্র) হল আবশ্যক নয় এবং প্রায়ই হল UTF-8 মধ্যে পাওয়া যায়নি
ruffin

13

নোট করুন যে ফাইলগুলির এনকোডিং কোনও ফাইলের কোথাও স্পষ্টভাবে বলা হয়নি। সুতরাং, ভিআইএম এবং অন্যান্য অ্যাপ্লিকেশনগুলির অবশ্যই এনকোডিংয়ে অনুমান করা উচিত। এটি করার প্রচলিত chardetপদ্ধতিটি অ্যাপ্লিকেশনটির সাথে রয়েছে, যা ভিআইএমের মধ্যে থেকে চালানো যেতে পারে:

:!chardet %

জটিবারম্যান প্রদত্ত উত্তরটি আপনাকে বর্তমান বাফারের এনকোডিং দেখায় যা ডিস্কে থাকা ফাইলের মতো এনকোডিং নাও হতে পারে। সুতরাং, আপনি লক্ষ্য করবেন যে chardetকখনও কখনও ভিআইএম এর চেয়ে আলাদা এনকোডিং প্রদর্শিত হবে, বিশেষত যদি আপনি সর্বদা একটি নির্দিষ্ট এনকোডিং (যেমন ইউটিএফ -8) ব্যবহার করার জন্য ভিআইএম কনফিগার করেন।

সুন্দর জিনিসটি chardetএটি অনুমানের জন্য একটি আত্মবিশ্বাসের স্কোর দেয়, যেখানে ভিআইএম \ x7F (এএসসিআইআই 127) এর বেশি অক্ষর না থাকলে এনকোডিংটি অনুমান করা সম্পর্কে ভুল (এবং প্রায়শই ভুল) হতে পারে। উদাহরণস্বরূপ, אপিএইচপি কোডের একটি দীর্ঘ ফাইলে একটি একক সংযোজন chardetমনে করে যে ফাইলটি ISO-8859-20.72 এর আত্মবিশ্বাসের সাথে রয়েছে, তবে সামান্য দীর্ঘ বাক্যাংশ যুক্ত করে שלום, עולם!‏ইউটিএফ -8 দেয় 0.99 এর আত্মবিশ্বাস স্কোর। উভয় ক্ষেত্রেই, ডিস্কের ফাইলটি ইউটিএফ -8 থাকার কারণে নয়, ভিআইএম অভ্যন্তরীণভাবে ইউটিএফ -8 ব্যবহারের জন্য কনফিগার করা হয়েছে বলে set fileencoding?দেখায় UTF-8


আমি প্রস্তাব দিচ্ছি যে আপনি ওএস'স জুড়ে চার্টেটের প্রাপ্যতা সম্পর্কে একটি শব্দ উল্লেখ করুন।
সোনারারজন

@ সৌন্দরারাজন: আমি কেবলমাত্র দেবিয়ান এবং সেন্টোস ব্যবহার করি বলে উল্লেখ করার মতো লোকটি সম্ভবত আমি নই। যদিও আপনার কাছে প্রাসঙ্গিক তথ্য থাকলে উত্তরটি সম্পাদনা করার জন্য আমন্ত্রিত হন। ধন্যবাদ!
dotancohen

আমি ভিআইএম-এর ভিতরে এটি করার প্রয়োজন দেখছি না, বাইরে থেকে এটি করা ভাল chardet <file>। তবুও, ভাল পরামর্শ।
Lepe

-1

আমি এটি পেয়েছি: https://vim.fandom.com/wiki/Reloading_a_file_ using_a_different_encoding

ভিম সঠিক এনকোডিং সনাক্ত করতে সক্ষম না হলে আপনি একটি পৃথক এনকোডিং ব্যবহার করে একটি ফাইল পুনরায় লোড করতে পারেন:

:e ++enc=<encoding>

যেখানে encodingহতে পারেcp850, ISO-8859-1, UTF-8, ...

ডটানকোহেনের পরামর্শ অনুযায়ী আপনি file yourfilenameএনকোডিং বা chardetect( আপনার লিনাক্স বিতরণ দ্বারা সরবরাহিত python-chardetবা uchardetনির্ভর করে) সন্ধান করতে ব্যবহার করতে পারেন ।


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