প্রতি লাইনে উইম শো শো হয় ^ এম
আমি কীভাবে এটি একটি 'সাধারণ' লাইন ব্রেকের সাথে প্রতিস্থাপন করব?
প্রতি লাইনে উইম শো শো হয় ^ এম
আমি কীভাবে এটি একটি 'সাধারণ' লাইন ব্রেকের সাথে প্রতিস্থাপন করব?
উত্তর:
এটিই আমার পক্ষে কাজ করেছে:
: ই ++ এফএফ = ডস
এটি এখানে পেয়েছে: http://vim.wikia.com/wiki/File_format
:e ++ff=dos
এরপরে :set ff=unix
শেষগুলি একটি বুদ্ধিমান বিন্যাসে রূপান্তরিত করবে।
:%s/<Ctrl-V><Ctrl-M>/\r/g
যেখানে <Ctrl-V><Ctrl-M>
টাইপ Ctrl+ Vতারপর Ctrl+ টাইপ M।
:%s
বিকল্প,% = সমস্ত লাইন
<Ctrl-V><Ctrl-M>
Characters এম অক্ষরগুলি (সিটিআরটিএল-ভি হ'ল সিআরটিএল ^ চরিত্রটি লেখার একটি সহজ উপায় এবং সিটিআরএল-এম নিয়মিত প্রকাশের পরে এম লিখেন, ফলস্বরূপ ^ এম বিশেষ চরিত্রের ফলে)
/\r/
নতুন লাইনের সাথে ( \r
)
g
এবং এটি বিশ্বব্যাপী করুন (কেবলমাত্র লাইনে প্রথম ঘটনা নয়)।
:%s/<Ctrl-V><Ctrl-M>/\r/g
(যেখানে line আর নতুন লাইনের সাথে এম rep এম প্রতিস্থাপন করা হয়েছে)।
লিনাক্স এবং ম্যাক ওএসে, নিম্নলিখিতগুলি কাজ করে,
:%s/^V^M/^V^M/g
যেখানে + ^V^M
টাইপ মানে , তারপর + ।CtrlVCtrlM
দ্রষ্টব্য: উইন্ডোজে আপনি সম্ভবত ^Q
পরিবর্তে ব্যবহার করতে চান ^V
, যেহেতু ডিফল্টরূপে ^V
পাঠ্য আটকানোর জন্য ম্যাপ করা হয়।
%s/\r/\r/g
ম্যাকভিমে ভালভাবে কাজ করেছি এমন একটি ফাইলের জন্য যা কেবলমাত্র ^M
লাইনের শেষে থাকে (ম্যাকভিমের শর্তে একটি দীর্ঘ লাইন)। স্পষ্টতই command r এর অর্থ এই কমান্ডের বনাম প্রতিস্থাপনের অংশগুলি প্যাটার্নের বিভিন্ন জিনিস।
এর মধ্যে vim
ফাইল ফর্ম্যাটটি দেখুন - ডস বা ইউনিক্স:
:set filetype=unix
:set fileformat=unix
ক্যারেজ রিটার্ন (সিআর,, এম) অক্ষর ছাড়াই ফাইলটি আবার লেখা হবে।
set ff=unix
একইভাবে একটি ছোট শর্টকাট হিসাবেও করতে পারেন এর ft
শর্টকাটfiletype
ম্যাকভিমে দেখা বিবিএডিট দিয়ে আমার তৈরি করা একটি ফাইল ^M
নিয়মিত ফাইলের পরিবর্তে একগুচ্ছ লাইন রিটার্ন প্রদর্শন করছে । নিম্নলিখিত স্ট্রিংটি সমস্যার সমাধান করেছে - আশা করি এটি সহায়তা করে:
:%s/\r/\r/g
এটি আকর্ষণীয় কারণ আমি একই চরিত্রটির সাথে লাইন ব্রেকগুলি প্রতিস্থাপন করছি তবে আমি মনে করি সঠিকভাবে প্রদর্শন করার জন্য ভিমকে কেবল একটি নতুন \ আর পাওয়া দরকার। আমি কেন এটি কাজ করে তার অন্তর্নিহিত যান্ত্রিকগুলি জানতে আগ্রহী হব।
\r
অক্ষরকে প্রতিস্থাপন করবে বলে মনে হয়েছিল । অভিযোগ না করা, আমি যা চেয়েছিলাম ঠিক এটাই। অদ্ভুত। \n
\r
প্রথম, ব্যবহার :set ff?
আপনার ফাইলটি ফাইল ফর্ম্যাটটি বের করতে করুন।
আমার ধারণা এটি হতে পারে unix
তবে সমস্যাটি হ'ল আপনার ফাইলটি fileformat=dos
"^ M ^ J" যুক্ত করে লাইন প্রান্তে তৈরি করে দিয়ে পড়া হয়েছিলflieformat=unix
কেবল "^ জে" কে লাইন প্রান্ত থেকে সরিয়ে দিয়ে সেখানে "^ এম" রেখে চলেছেন।
:e ++ff=dos
আপনার ফাইলের ফর্ম্যাটটিকে ইউনিক্স থেকে ডস হিসাবে পরিবর্তন করতে কেবল ভিম কমান্ড লাইনে ইনপুট করুন । এটি সমস্যার সমাধান করা উচিত। যদি না হয়, :%s/\r//g
আপনাকে সাহায্য করা উচিত।
:e ++ff=dos
তারপরে :set ff=unix
এবং:w
character এম অক্ষরটি মিলে যাওয়ার জন্য আমাকে এটিকে চাক্ষুষভাবে নির্বাচন করতে হয়েছিল এবং তারপরে এটি পুনরুদ্ধারের জন্য ক্লিপবোর্ড কমান্ডে ওএস অনুলিপিটি ব্যবহার করতে হয়েছিল। আপনি প্রতিস্থাপন কমান্ড চেষ্টা করার আগে অক্ষরটির জন্য অনুসন্ধান করে এটি পরীক্ষা করতে পারেন।
/^M
প্রথম খারাপ রেখাটি নির্বাচন করা উচিত
:%s/^M/\r/g
সমস্ত ত্রুটিযুক্ত ^ এমকে গাড়ীর রিটার্নের সাথে প্রতিস্থাপন করবে।
এটি ম্যাকভিমে ফাংশন হিসাবে রয়েছে যা gvim 7 এর উপর ভিত্তি করে।
সম্পাদনা করুন:
আমার উইন্ডোজ 10 মেশিনে আবার এই সমস্যাটি রয়েছে যার উইন্ডোজের উবুন্টু রয়েছে এবং আমি মনে করি এটি ভিএম-র জন্য ফাইল-ফর্ম্যাট সমস্যা সৃষ্টি করছে। এই ক্ষেত্রে এফএফটিকে ইউনিক্স, ম্যাক, বা ডস থেকে পরিবর্তন করে ^ এম থেকে ^ জে পরিবর্তন করে আবার ফিরে আসা ছাড়া আর কিছুই করেনি।
এই ক্ষেত্রে সমাধান:
:%s/\r$/ /g
:%s/ $//g
আমি এই পথে যাওয়ার কারণটি হ'ল কারণ আমি নিশ্চিত করতে চেয়েছিলাম যে আমার ফাইলটি আমি অ-ধ্বংসাত্মক হয়ে যাচ্ছি। আমি থাকতে পারতাম :%s/\r$//g
তবে গাড়ি চালানো ফেরত মুছে ফেলা হত এবং অপ্রত্যাশিত ফলাফল হতে পারে। পরিবর্তে আমরা একক সিআর অক্ষর, এখানে একটি ^ এম অক্ষরকে একটি স্পেসে রূপান্তর করি এবং তারপরে লাইনের শেষে সমস্ত স্থান সরিয়ে ফেলি (যা আমার পক্ষে পছন্দসই ফলাফল)
দীর্ঘদিন ধরে উত্তর দেওয়া হয়েছে এমন একটি পুরানো প্রশ্ন পুনরুদ্ধার করার জন্য দুঃখিত, তবে এটি আগে কিছুটা বিভ্রান্তি বলে মনে হয়েছিল এবং আমি ভেবেছিলাম যে গুগল অনুসন্ধানগুলিতে এটি উচ্চতর আসার পরে আমি সেগুলির কয়েকটি পরিষ্কার করতে সহায়তা করব।
এগুলির কোনওটিই আমার পক্ষে কাজ করেনি, তাই আমি এটি চেষ্টা করেছিলাম, যা কাজ করেছিল:
আদর্শ :%s/
প্রেস CTRL-VCTRL-M
আদর্শ //g
প্রেস Enter
সুতরাং ভিম জোরে সামগ্রিক কমান্ড মত চেহারা :%s/^M//g
এটি কী করে: :%s
(সন্ধান করুন এবং প্রতিস্থাপন করুন) /^M/
(সেই চিহ্ন) /
(কোনও অক্ষর ছাড়াই) g
(বিশ্বব্যাপী)।
^ M দ্বারা প্রাপ্ত করা হয় Ctrl+ + Vএবং M, তাই না
s/^M//g
Ctrl ব্যবহার করার প্রয়োজন ছাড়াই:
:%s/\r$//
সহজ জিনিস যা আমার পক্ষে কাজ করেছিল
dos2unix filename
আমি সেড দিয়ে এটি করেছি:
sed -i -e 's/\r/\n/g' filename
sed -e 's/\r/\n/g' <<< 'over and over'
->oven and oven
sed
তবে বিএসডি sed
তখন নয় (ওএসএক্সে পাওয়া যায়)। যে কেউ লাইন ব্রেকগুলি ঠিক করছে সম্ভবত অপারেটিং সিস্টেমের মিশ্রণ নিয়ে কাজ করছে, সুতরাং উত্তর কখন কার্যকর হবে সে সম্পর্কে পরিষ্কার হওয়া কার্যকর to
শুধু কী সম্পর্কে:
:%s/\r//g
এটি আমার পক্ষে পুরোপুরি কাজ করেছিল।
এটি যা করে তা কেবল সমস্ত লাইনের লাইনের শেষ পরিষ্কার করার জন্য, এটি ^ M কে সরিয়ে দেয় এবং এটিই।
এই প্রশ্নের আরও অনেক উত্তর রয়েছে তবে তবুও নিম্নলিখিতটি আমার পক্ষে সবচেয়ে ভাল কাজ করে, কারণ আমার একটি কমান্ড লাইন সমাধান প্রয়োজন:
vim -u NONE -c 'e ++ff=dos' -c 'w ++ff=unix' -c q myfile
ব্যাখ্যা:
myfile
:e ++ff=dos
ডস লাইন শেষা w শ যেমন সমগ্র ফাইলের একটি রিলোড বলপূর্বক।:w ++ff=unix
UNIX লাইন শেষা w শ ব্যবহার ফাইলটি লিখতেCtrl+ Mআমার উইন্ডো হ্রাস করে, কিন্তু Ctrl+ Enterআসলে একটি ^M
অক্ষর সন্নিবেশ করে । আমারও নিশ্চিত হওয়া উচিত যে Ctrlপ্রেসগুলির মধ্যে কীটি তুলে না ফেলতে হবে ।
সুতরাং আমার জন্য সমাধানটি ছিল:
:%s/<Ctrl-V><Ctrl-Enter>/\r/g
কোথায় <Ctrl-V><Ctrl-Enter>
করার উপায় টিপে ধরে রাখুন Ctrl , প্রেস ও মুক্তি V, প্রেস ও মুক্তি Enter, এবং তারপর মুক্তি Ctrl ।
উপরের সমাধানটি বিদ্যমান রেখাগুলির মধ্যে একটি অতিরিক্ত লাইন যুক্ত করবে, কারণ এর \r
পরে ইতিমধ্যে একটি অদৃশ্য রয়েছে ^M
।
এটি প্রতিরোধ করতে, আপনি ^M
অক্ষরগুলি প্রতিস্থাপন না করে মুছতে চান ।
:%s/<Ctrl-V><Ctrl-Enter>//g
যেখানে %
"এই বাফারটিতে" এর s
অর্থ, "বিকল্প," এর /
অর্থ নিম্নলিখিত প্যাটার্ন, " অক্ষরটি (উপরে দেখুন) <Ctrl-V><Ctrl-Enter>
পেতে টিপতে চাবিগুলি বোঝায় ^M
, //
অর্থ" কিছুই নেই "(বা," প্যাটার্ন সহ) এই দুটি স্ল্যাশগুলির মধ্যে, যা খালি "), এবং g
এটি একটি লাইনের প্রথম উপস্থিতির বিপরীতে" বিশ্বব্যাপী, "অর্থ একটি পতাকা ।
এটি আমার পক্ষে কাজ করেছে:
\n
লাইন শেষ)তাই ভিমে:
:set ff=unix
:w
আমার ক্ষেত্রে,
উপরের কিছুই কাজ করে নি, আমার ম্যাক থেকে লিনাক্স মেশিনে আমার একটি সিএসভি ফাইল অনুলিপি করা হয়েছিল এবং আমি উপরের সমস্ত কমান্ড ব্যবহার করেছি তবে নীচের একটি ছাড়া আর কিছুই সাহায্য করেনি
tr "\015" "\n" < inputfile > outputfile
আমার একটি ফাইল ছিল যাতে ^ এম অক্ষরগুলি নীচের মতো লাইনের মাঝে স্যান্ডউইচ করা ছিল
Audi,A4,35 TFSi Premium,,CAAUA4TP^MB01BNKT6TG,TRO_WBFB_500,Trico,CARS,Audi,A4,35 TFSi Premium,,CAAUA4TP^MB01BNKTG0A,TRO_WB_T500,Trico,
বিকল্পভাবে, ডস 2 ইউনিক্স এবং ইউনিক্স 2 ডিওস নামে পরিচিত ওপেন-সোর্স ইউটিলিটিগুলি পাওয়া যায় যা এটি খুব কাজ করে। একটি লিনাক্স সিস্টেমে এগুলি সম্ভবত ডিফল্টরূপে ইনস্টল করা থাকে; উইন্ডোজ সিস্টেমের জন্য আপনি এটিকে অন্যদের মধ্যে http://www.bastet.com/ থেকে ডাউনলোড করতে পারেন ।
এই আদেশগুলির মধ্যে একটি ব্যবহার করুন:
:%s/\r//g
অথবা
:%s/\r\(\n\)/\1/g
এটি আমার পক্ষে কাজ করেছে:
:% s/\r\n/\r
এই পরামর্শগুলির মধ্যে আমার ^M
কোনওটিই ভিএম এবং গ্রহন উভয়ের সাথে কাজ করার সময় লাইন ব্রেকগুলির একটি বোঝা অর্জন করতে পরিচালিত ছিল না । আমার সন্দেহ হয় যে আমি বাইরের কেসের মুখোমুখি হয়েছি তবে ক্ষেত্রে এটি আমার যে কাউকে সহায়তা করে।
:%s/.$//g
এবং এটি আমার সমস্যার সমাধান করেছে
:g/^M/s// /g
আপনি যদি এটি ^M
ব্যবহার Shift+6 Caps+M
করে টাইপ করেন তবে তা গ্রহণ করবে না।
আপনার টাইপ করা দরকার ctrl+v ctrl+m
।
^M
অযাচিত লাইন ব্রেক দেয়। এটি পরিচালনা করতে আমরা sed
নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারি :
sed 's/\r//g'
set binary
আপনার .vimrc এ সরিয়ে ফেলুন !
sed
MacOS এ ব্যবহার করতে , এটি করুন:
sed -i.bak $'s/\r//' <filename>
ব্যাখ্যা: এখানে $'STRING'
সিনট্যাক্স ব্যাশ শেলের সাথে সম্পর্কিত। ম্যাকগুলি \r
বিশেষ চরিত্র হিসাবে বিবেচনা করে না । কমান্ড স্ট্রিংয়ের উদ্ধৃতি দিয়ে $''
আপনি শেলকে এএনএসআই-সি স্ট্যান্ডার্ডে নির্দিষ্ট করা \r
প্রকৃত \r
চরিত্রের সাথে প্রতিস্থাপন করতে বলছেন ।
"এই ফাংশনটি জাম্পগুলির তালিকা সংরক্ষণ করে
fun! Dos2unixFunction()
let _s=@/
let l = line(".")
let c = col(".")
try
set ff=unix
w!
"%s/\%x0d$//e
catch /E32:/
echo "Sorry, the file is not saved."
endtry
let @/=_s
call cursor(l, c)
endfun
com! Dos2Unix keepjumps call Dos2unixFunction()
আমি একটি বিকেল spent n ctrl-v 012 (উভয়ই আমাকে নাল দিয়ে সরবরাহ করে) দিয়ে লড়াই করে কাটিয়েছি। আমি মেটাগ্রাফারে পৌঁছানো পর্যন্ত এই থ্রেডটি দিয়ে শ্রম দিয়েছি।
\r
আমার জন্য ভাল কাজ!
/),/s/),/)\r/g
এই মত কিছু পরিণত:
ব্ল্যাকলিস্ট-অতিরিক্ত: i386 (0.4.1, 0.4.1 + এনএমউ 1), লিবমাউন্ট 1: আই 386 (2.20.1-5.1, 2.20.1 -5.2), লিবলব্লিড 1: i386 (2.20.1-5.1, 2.20.1-5.2) , libapt-pkg4.12: i386 (0.9.7.4, 0.9.7.5), এনএম্যাপ: আই 386 (6.00-0.1, 6.00-0.2), লিবাসন-সাধারণ: i386 (1.0.22-7.3,
এরকম কিছুতে:
26 লিবিডব্লিউভি-1.2-4: আই 386 (1.2.9-3, অটোমেটিক)
27 ওপেনডেডি -6-জের-হেডলেস: আই 386 (6 বি 24-1.11.4-3, স্বয়ংক্রিয়)
28 জেড: আই 386 (0.99.19-2.1)
ম্যাজিক। আমি গভীরভাবে কৃতজ্ঞ