আমি কীভাবে ভিআইএমের ডিফল্ট এনকোডিংটি ইউটিএফ -8 এ সেট করতে পারি?


62

আমি অনুবাদকৃত স্ট্রিং সরবরাহ করে একটি ওপেন সোর্স প্রকল্পে অবদান রাখতে চাই। তাদের প্রয়োজনীয়তার একটি হ'ল অবদানকারীদের অবশ্যই পিও ফাইলগুলির এনকোডিং হিসাবে ইউটিএফ -8 ব্যবহার করতে হবে।

আমি লিনাক্সে ভিআইএম 7.3 ব্যবহার করছি। আমি কীভাবে নিশ্চিত হতে পারি যে ভিআইএমের এনকোডিংটি ইউটিএফ -8 এ সেট করা আছে, যাতে আমি .po ফাইলটি সঠিকভাবে সম্পাদনা করতে এবং সেভ করতে পারি?

উত্তর:


64

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

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

সবচেয়ে খারাপ, ডিফল্টভাবে, ভিম, বাফারটিতে পাঠ্যের প্রতিনিধিত্ব করতে ল্যাটিন -1 ব্যবহার করে। সুতরাং বাইট-অর্ডার চিহ্ন সহ একটি ইউটিএফ -8 ফাইলটি ল্যাটিন -1 এ ডাউন-রূপান্তর দ্বারা দূষিত হবে।

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

আপনার মধ্যে .vimrc, set encoding=utf-8ভিম যুক্ত এবং পুনরায় চালু করুন ।

বা পরিবর্তে, LANGইউটিএফ -8 আপনার পছন্দসই অক্ষর এনকোডিং হয়েছে তা নির্দেশ করতে পরিবেশের পরিবর্তনশীল সেট করুন । এটি কেবল ভিমকে নয় এমন কোনও সফ্টওয়্যারকে প্রভাবিত করবে যা LANGপাঠ্যের প্রতিনিধিত্ব করবে কীভাবে তা নির্ধারণ করতে নির্ভর করে । উদাহরণস্বরূপ, যা নির্দেশ করে টেক্সট ইংরেজি (প্রদর্শিত হওয়া উচিত en, যেমন মার্কিন যুক্তরাষ্ট্র (উচ্চারিত) US), কারণ যে হল UTF-8 (এনকোড utf-8), সেট LANG=en_US.utf-8

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

কিভাবে তেজ ফাইল এনকোডিং সনাক্ত করে আরও তথ্যের জন্য, দেখুন তেজ ডকুমেন্টেশনে বিকল্পfileencodings

এনকোডিং যে তেজ অভ্যন্তরীণভাবে ব্যবহার সেটিং সম্পর্কে আরো তথ্যের জন্য, দেখুন বিকল্পencoding

আপনি সময় ব্যবহৃত একটি ফাইল ফিরে ডিস্কে লেখা এনকোডিং ওভাররাইড করার প্রয়োজন হলে, দেখতে বিকল্পfileencoding


3
আসলে দেখে মনে হচ্ছে আমাকে সম্পাদনাও বিরক্ত করতে হবে না .vimrc; প্রকৃতপক্ষে এনকোডিংয়ের ডিফল্ট মান হ'ল "latin1" বা system LANG এর থেকে মান, যা আমার সিস্টেমে সেট করা আছে en_US.UTF-8। এই কারণে বাক্স বাইরে :set encodingদেয় encoding=utf-8। যেমনটি প্রত্যাশিত, ল্যাং যদি সেট না করে থাকে :set encodingতবে দেয় encoding=latin1। মহান উত্তরের জন্য ধন্যবাদ!
পাওলো

এটি সাধারণত দরকারী হতে পারে তাই আমি এটি উত্তরে যুক্ত করেছি।
মেটাএড

আপনি যদি ল্যাটিন 1 হিসাবে এনকোডযুক্ত কোনও ফাইল খোলেন, তবে এই সেটিংটি ফাইল এনকোডিংটি পরিবর্তন করবে না? কোনও ফাইলের এনকোডিং অক্ষত রাখতে কিন্তু নতুন ফাইলগুলির জন্য utf-8 পছন্দ করতে কীভাবে আপনি ভিম পেতে পারেন?
ডেভিড কেনেডি

@ ডেভ কেনেডি ভিম কেবল তখনই ফাইলটিকে লাতিন -1 হিসাবে বিবেচনা করতে সক্ষম হন যখন ফাইলটি উদ্বেগজনকভাবে লাতিন -১ হয়। যখন এনকোডিং অস্পষ্ট হয়, তখন ভিমকে বেছে নিতে হবে। উদাহরণস্বরূপ, কেবলমাত্র 7-বিট ASCII কোড সহ একটি ফাইল বৈধ ল্যাটিন 1 তবে এটি বৈধ ইউটিএফ -8, এবং অন্যান্য। এই জাতীয় ফাইলটি সাধারণত ইউটিএফ -8 হিসাবে বিবেচিত হবে। এই ফলাফলটি এড়ানোর একটি উপায় ফাইল এনকোডিংটিকে দ্ব্যর্থহীন করা। আমি যে কৌশলটি দেখেছি তা হল 0xF7 কোডের একটি স্ট্রিং যুক্ত করা। ইউটিএফ -8 এ, 0xF7 অবৈধ। তবে লাতিন -১ এ এটি বিভাগ চিহ্ন (÷) উপস্থাপন করে। ভিম সাধারণত ফাইলটি ল্যাটিন -১-এর সিদ্ধান্ত নেবে।
মেটাএড

4

ভিমডোকের মতে ভিম ফাইল এনকোডিং স্বয়ংক্রিয়ভাবে সনাক্ত করার চেষ্টা করে, সুতরাং আপনি যদি বিদ্যমান ফাইলগুলি সম্পাদনা করেন তবে ভাল হবে old

আপনি চাইলে সবসময় এনকোডিংকে জোর করতে পারেন :set fileencodings=utf-8। আপনি এখানে ডকুমেন্টেশন খুঁজে পেতে পারেন ।


6
ফাইলেনকোডিংস = utf-8 এর ফলে ভিম ইনপুট ফাইলটিকে ইউটিএফ -8 হিসাবে স্বীকৃতি দেবে কিন্তু তারপরে ল্যাটিন -১ এ ক্ষতিকারক রূপান্তর সম্পাদন করবে। এছাড়াও এটি ভিমকে ইউটিএফ -16 স্বীকৃতি দিতে ব্যর্থ করবে। আরও ভাল সমাধান হ'ল এনকোডিং = utf-8 সেট করা যা ভিমকে একটি স্থানীয় এক বাইট সম্পাদক থেকে একটি দেশীয় মাল্টবাইট সম্পাদকে পরিণত করে।
মেটাএড

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