ভিম - কীভাবে একটি নতুন লাইন replace n দুটি two n এর সাথে প্রতিস্থাপন করা যায়


34

উইম এডিটর-এ, আমি ভিআইএম কমান্ড মোড ব্যবহার করে একটি নতুন লাইন অক্ষর (\ n) দুটি নতুন রেখা অক্ষরের (\ n \ n) প্রতিস্থাপন করতে চাই।

ইনপুট ফাইল সামগ্রী:

This is my first line.
This is second line.

যে কমান্ডটি আমি চেষ্টা করেছি:

:%s/\n/\n\n/g

এটি স্ট্রিংকে অযাচিত অক্ষর হিসাবে প্রতিস্থাপন করে

This is my first line.^@^@This is second line.^@^@

তারপরে আমি নিম্নলিখিত কমান্ডটি চেষ্টা করেছিলাম

:%s/\n/\r\r/g

এটি সঠিকভাবে কাজ করছে। আপনি ব্যাখ্যা করতে পারেন কেন এটি দ্বিতীয় কমান্ড দিয়ে ভাল কাজ করছে?




2
পার্শ্ব নোট, আপনাকে /বিভাজক হিসাবে ব্যবহার করতে হবে না । এটি আরও পঠনযোগ্য::%s;\n;\n\n;g
ডিজেএমসিএমহেম

1
জন্য অনুসন্ধান করুন \n, সঙ্গে প্রতিস্থাপন \r\r, :% s/\n/\r\r/g: stackoverflow.com/a/71334/911945
আন্তন Tarasenko

উত্তর:


47

অদ্ভুতভাবে যথেষ্ট, প্রতিস্থাপনের\n জন্য ভিমে নতুন লাইন বোঝায় না, তবে শূন্য। এএসসিআইআই নুল হ'ল ( )।^@control@

Orতিহাসিকভাবে, vi লাইন-এন্ডিং হিসাবে প্রতিস্থাপিত ^M( controlM) যা নতুনলাইন। ভিএম \rএকইরকম অর্থ বোঝাতে একটি এক্সটেনশন যুক্ত করেছে (সি ভাষার মতো) ^Mতবে বিকাশকারীগণ পাঠ্য প্রতিস্থাপনের\n সময় অর্থ নাল করা বেছে নিয়েছিলেন । এটি অনুসন্ধানগুলিতে এর ব্যবহারের সাথে সঙ্গতিপূর্ণ নয় , যা একটি নতুন লাইন খুঁজে পায়।

আরও পড়া:


7

এই চেষ্টা করুন: %s/$/^V^M/(যেখানে ^Vহয় Ctrl-Vএবং ^Mহয় Ctrl-M- আপনি টাইপ যখন ^Vএটি একটি প্রিন্ট হবে ^এটি উপর ব্যাকস্পেস তারপর গৃহস্থালির কাজ এবং তারপর যখন আপনি টাইপ ^Mএটি প্রদর্শিত হবে ^M... জন্য Ctrl-ভি মান TTY হয় আক্ষরিক পরবর্তী চরিত্র - কমান্ডটি প্রয়োগ stty -aকরতে আপনার টিটির বিশেষ অক্ষরগুলি দেখান)।


প্রকৃতপক্ষে, খুব অভিজ্ঞরা এটি জানতে পারবেন যে সিআরএলএফ থেকে সর্বদা প্রয়োজনীয় রূপান্তরটির জন্য ডস 2 ইউনিক্স বা অনুরূপ ব্যবহার ছাড়ার বিকল্প হিসাবে। Ctrl-V ব্যবহার 1 দিনের প্রথম পাঠ।
mckenzm

5

vimমেমরিতে \nনাল অক্ষর উপস্থাপন করতে ব্যবহার করুন \0, vimহ্যান্ডেল ফাইলটিতে নাল অক্ষর কীভাবে থাকে (যখন তা viপারে না)।

ব্যবহারের \nবাফারে লাইনের শুধুমাত্র ম্যাচ শেষ, অভিব্যক্তি ব্যবহার STRING কখন নেই সম্পর্কে newline।

দেখুন : H এন এল ব্যবহৃত-নাল জন্য এবং : জ সি আর ব্যবহৃত-জন্য-এন এল আরো বিস্তারিত জানার জন্য।


1

নিওভিম ( nvim) এবং Vimসংস্করণ দিয়ে পরীক্ষিত

NVIM v0.3.0
VIM - Vi IMproved 8.1

একটি নতুন লাইন সরান:

cell
allele
rs2981578
fgfr2

এখানে, \nনতুন লাইনের সাথে মিল রয়েছে ( তবে একটি নতুন লাইন সন্নিবেশ করতে , ব্যবহার করুন \r):

:'<,'>s/\n/|/g

cell|allele|rs2981578|fgfr2

একটি নতুন লাইন যুক্ত করুন:

নাঃ:

cell|allele|rs2981578|fgfr2

:'<,'>s/\n/|/g

cell^@allele^@rs2981578^@fgfr2

^@এলএফ (লাইন ফিড; http://vimhelp.appspot.com/digraph.txt.html#digraphs-default দেখুন ) এর জন্য ডায়াক্রিটিক চিহ্ন

হ্যাঁ:

cell|allele|rs2981578|fgfr2

:'<,'>s/|/\r/g

cell
allele
rs2981578
fgfr2

ওপি-র প্রশ্নের সমাধানের জন্য (কীভাবে একজনকে \nদুটি দিয়ে প্রতিস্থাপন করা যায় \n\n), কেবল আরেকটি যুক্ত করুন \r:

cell
allele
rs2981578
fgfr2

:'<,'>s/\n/\r\r/g

cell

allele

rs2981578

fgfr2

... অর্থাৎ মূল নিউলাইনটি ( \n) এর সাথে মেলে এবং এটি দুটি নতুন লাইন / ক্যারেজ রিটার্ন ( \r\r) দিয়ে প্রতিস্থাপন করুন ।

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