কোনও ফাইলের শেষে ভিএম স্বয়ংক্রিয়ভাবে একটি নতুন লাইন যুক্ত করবেন কীভাবে?


16

<EOL>মূল ফাইলটিতে কেবল তখনই ভিম সাধারণত শেষ লাইনের জন্য লেখেন ।

কোনও ফাইলের শেষে সর্বদা একটি নতুন লাইন লেখার জন্য ভিএম কীভাবে তৈরি করবেন (যখন ফাইলটি বাইনারি নয় এবং ইতিমধ্যে একটি নেই)?

আমি eolবিকল্পটি পরীক্ষা করেছি , তবে এটি প্রত্যাশার মতো কার্যকর হয়নি।

আরও দেখুন: পাঠ্য ফাইলগুলির শেষে লাইনটি হারিয়ে যাওয়া প্রান্তটি সংরক্ষণ করুন , তবে বিপরীতে। এবং: ফাইলগুলি একটি নতুন লাইনের সাথে কেন শেষ করা উচিত?

উত্তর:


17

মৌলিক তথ্য

ভিম বাফারে সর্বশেষতম নিউলাইন দেখায় না তবে আপনি যখন লেখেন তখন ভিএম সর্বদা ইওএল ফাইলের শেষে রাখে, কারণ এটি ইউনিক্স সিস্টেমে পাঠ্য ফাইলের জন্য আদর্শ। আপনি এই সম্পর্কে আরও তথ্য পেতে পারেন এখানে । সংক্ষেপে আপনাকে অনুপস্থিতিতে ভিমের শেষে ফাইলের শেষে নতুন লাইনগুলি নিয়ে চিন্তা করতে হবে না।

পরীক্ষা-নিরীক্ষা ঘ

এই আচরণটি পরীক্ষা করতে আপনি এই ছোট পরীক্ষাটি করতে পারেন। টার্মিনালে এক্সিকিউট:

$ vim test_test

অক্ষরটি প্রবেশ করুন 1এবং ফাইলটি সংরক্ষণ করুন :wq

আপনার ফাইলটিতে কেবল একটি অক্ষর আছে, তাই না? আসলে না :) এখন আপনার ফাইল 1এবং LFঅক্ষর রয়েছে। হেক্সডাম্প ইউটিলিটি সহ এটি পরীক্ষা করা যাক:

$ hexdump test_test
0000000 31 0a
0000002

31চরিত্রের জন্য ASCII কোড 1, এবং 0aপ্রিন্টিং LFঅক্ষরের জন্য ASCII কোড যা ইউএনআইএক্সের জন্য আপনি ইতিমধ্যে লাইনের শেষের জন্য কোডটি জানেন code

পরীক্ষা 2

তবে কী যদি আমরা ফাইলটি খুলব যা ফাইলের eolশেষে প্রতীক নেই। আসুন এটিও পরীক্ষা করে দেখুন। এর শেষে ইওল ছাড়াই ফাইল তৈরি করা যাক, উদাহরণস্বরূপ:

$ echo -n "1" > test_without_eol

তারপরে আবার আসুন হেক্সডাম্প দিয়ে এটির ভিতরে inside

$ hexdump test_without_eol
000000 31
0000001

সুতরাং eolএখানে কোন চরিত্র নেই। এই ফাইলটি ভিমে খুলুন:

$ vim test_without_eol

সম্পাদকের নীচে আপনি দেখতে পাবেন:

"test_without_eol" [noeol] 1L, 1C

এবং আপনি এই ফাইলটি সংরক্ষণ করলে eolঅক্ষরটি স্বয়ংক্রিয়ভাবে স্থাপন করা হবে।

আমরা এই সম্পর্কে কি করতে পারি?

আপনার যদি সত্যিই ফাইলটির শেষ দেখতে হয়। এই আদেশটি ব্যবহার করার চেষ্টা করুন:

:set listchars=eol:$

এটি চিহ্ন eolহিসাবে সমস্ত অক্ষর প্রদর্শন করবে $


গ্রেট। আমি আমার বিভ্রান্তির পরে একই সিদ্ধান্তে পৌঁছেছি, কারণ ভিম আসলে আমাকে এই নতুন লাইনটি দেখায় নি, তবে এটি সংরক্ষণের পরে সেখানে ছিল।
কেনোরব

1
@ টেনরব আপনি যেভাবে এই কম্যান্ড ব্যবহার করে সমস্ত ইওএল চরিত্র প্রদর্শন করতে পারবেন:set listchars=eol:$
আলেকজান্ডার মাইশভ

"আসলে আমাকে এই নতুন লাইনটি দেখাচ্ছিল না" - ইউনিক্সে, কোনও রেখা নেই। একটি লাইন "অ-এলএফ অক্ষরের সংখ্যা হিসাবে সমাপ্ত হওয়া" হিসাবে সংজ্ঞায়িত করা হয়। আপনি যদি এলএফটিকে "পরের লাইনে যান" না হিসাবে "লাইনের শেষ" হিসাবে মনে করেন, ভিম হঠাৎ করে যা করে তা আরও বেশি অর্থবোধ করে।
আমাদান

8

তেজ শুধুমাত্র EOL যদি ফাইল হিসাবে খোলা হয় বাদ 'binary' এবং'endofline' বিকল্প রিসেট হয় (বাইনারি ফাইল একটি EOL যখন খোলার ছিল না যখন, অথবা আপনি স্পষ্টভাবে বিকল্প রিসেট)। অন্য কথায়, ভিম কেবল বাইনারি ফাইলগুলির জন্য অনুপস্থিত ইওএলকে সম্মান করে। পাঠ্য ফাইলগুলির জন্য, এটি সর্বদা একটি (যুক্ত) ইওএল দিয়ে লেখেন। (এজন্য আপনাকে ইওএল ছাড়াই পাঠ্য ফাইলগুলি রাখতে আমার প্রিজারনওইওএল প্লাগইনের মতো সমাধানের প্রয়োজন )) আপনি এখানে সমস্ত বিবরণ সন্ধান করতে পারেন :help 'endofline'

সুতরাং, আপনার কেবলমাত্র ভিএমকে একটি ইওএল লিখতে যাতে ফাইলটিকে নন-বাইনারি হিসাবে খোলার বিষয়টি নিশ্চিত করতে হবে


5

আলেকজান্ডার যেমন উল্লেখ করেছেন, ভিম ইওএফ-তে EOL দেখায় না, সে কারণেই এটি এত বিভ্রান্তিকর (বিশেষত খালি / ফাঁকা নতুন লাইন যা অন্য একটি বিষয়), তাই এটি ফাইল-সেভে প্রতিটি সময়ই লিখবে।

এটি কার্যকর হলে কীভাবে পরীক্ষা করতে হয় তা এখানে সহজ পরীক্ষা:

$ printf foo > foo.txt
$ cat foo.txt
foo$ wc foo.txt
0 1 3 foo.txt
$ vim -cwq foo.txt
$ cat foo.txt
foo
$ wc foo.txt
1 1 4 foo.txt

EOL না থাকলে শেল প্রম্পট কীভাবে আচরণ করে তা লক্ষ্য করুন (এটি পরবর্তী লাইনের সাথে মিশে যায়)। ভিমের সাথে ফাইলটি পুনরায় সেভ করার সময় এটি যুক্ত করে।

ব্যবহার করে wcআমরা সংরক্ষণের আগে এবং পরে লাইন, শব্দ এবং অক্ষর গণনা করতে পারি, সুতরাং আমরা দেখতে পাচ্ছি যে এটি আসলে পরিবর্তিত হয়।

কেন এটি এত গুরুত্বপূর্ণ? আমাদের ফাইলগুলি পসিক্স অনুগত রাখতে ।

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