كيفية تحويل ^M لينيبريك إلى "طبيعية" لينيبريك في ملف فتح في همة?

StackOverflow https://stackoverflow.com/questions/811193

  •  03-07-2019
  •  | 
  •  

سؤال

همة يظهر على كل سطر ينتهي ^M

كيف أفعل أن تحل محل هذه مع 'طبيعية' لينيبريك?

هل كانت مفيدة؟

المحلول

وهذا هو الشيء الوحيد الذي عملت بالنسبة لي:

<اقتباس فقرة>   

و: البريد ++ وما يليها = دوس

وجدت أنه في: http://vim.wikia.com/wiki/File_format

نصائح أخرى

القيادة

:%s/<Ctrl-V><Ctrl-M>/\r/g

وأين <Ctrl-V><Ctrl-M> يعني اكتب السيطرة + V ثم السيطرة + M .

شرح

:%s

وبديل،٪ = جميع خطوط

<Ctrl-V><Ctrl-M>

و^ M حرفا (على Ctrl-V هو وسيلة همة من كتابة السيطرة ^ الحرف وعلى Ctrl-M يكتب M بعد التعبير العادي، مما أدى إلى طابع خاص ^ M)

/\r/

ومع الخط الجديد (\r)

g

والقيام بذلك على مستوى العالم (وليس فقط التواجد الأول على الخط).

في لينكس وماك OS، الأعمال التالية،

:%s/^V^M/^V^M/g

وحيث ^V^M يعني اكتب السيطرة + V ، ثم السيطرة + M .

<الفرعية> ملاحظة: على ويندوز ربما كنت ترغب في استخدام ^Q بدلا من ^V، منذ ذلك الحين ^V الافتراضي يتم تعيين للصق النص

.

وضمن vim، والنظر في تنسيق ملف - DOS أو يونكس:

<الصورة> :set filetype=unix

و:set fileformat=unix

وسوف يتم كتابة الملف مرة أخرى دون إرجاع (CR، ^ M) حرفا.

ملف أنا قد خلقت مع BBEdit ينظر في MacVim تم عرض مجموعة من ^M خط العوائد بدلا من تلك العادية.السلسلة التالية محل حل المسألة - نأمل أن يكون هذا مساعدة:

:%s/\r/\r/g

انها مثيرة للاهتمام لأنني استبدال خط فواصل مع نفس الحرف ولكن أعتقد همة فقط يحتاج الى الحصول على الطازجة لعرض بشكل صحيح.سأكون مهتما لمعرفة الأساسية ميكانيكا لماذا يعمل هذا.

أولا، استخدام :set ff? لمعرفة تنسيق الملف الملف الخاص بك.

واعتقد انه يمكن unix، ثم المشكلة تم إنشاء الملف الخاص بك مع fileformat=dos مضيفا "^ M ^ J" إلى نهاية الخط ولكن قراءة مع flieformat=unix إزالة فقط "^ J" من نهاية الخط، وترك " ^ M "هناك.

وفقط :e ++ff=dos الإدخال في سطر الأوامر فيم لتغيير تنسيق الملف الخاص بك من يونيكس لدوس. من المفروض ان تحل المشكلة. إذا لم يكن كذلك، يجب :%s/\r//g تساعدك على الخروج.

من أجل الحصول على ^M حرف المباراة كان بصريا حدده ثم استخدام نظام التشغيل نسخ إلى الحافظة الأمر لاسترداد ذلك.يمكنك اختبار ذلك عن طريق القيام بالبحث عن الحرف قبل محاولة استبدال القيادة.

/^M

يجب تحديد أولا سيئة الخط

:%s/^M/\r/g

سيتم استبدال جميع المخطئين ^M مع حرف إرجاع.

هذه وظائف في MacVim ، والتي تقوم على gvim 7.

تحرير:

تواجه هذه المشكلة مرة أخرى على الجهاز ويندوز 10 ، الذي أوبونتو ويندوز, وأعتقد أن هذا هو الذي يسبب fileformat القضايا همة.في هذه الحالة تغيير ff إلى unix, mac, dos أو فعل أي شيء سوى تغيير ^M ^ي والعودة مرة أخرى.

الحل في هذه الحالة:

:%s/\r$/ /g
:%s/ $//g

السبب ذهبت في هذا الطريق لأنني أردت أن تضمن كان يجري غير مدمرة مع الملف.أنا يمكن أن يكون :%s/\r$//g ولكن هذا من شأنه أن يكون حذف حرف إرجاع الحق في الخروج, و يمكن أن يكون له نتائج غير متوقعة.بدلا من ذلك نحن تحويل المفرد CR حرف هنا ^M حرف في الفضاء ، ثم قم بإزالة جميع المساحات في نهاية الأسطر (وهو بالنسبة لي هو نتيجة مرغوبة بغض النظر)

آسف على إحياء مسألة قديمة له منذ فترة طويلة تم الرد عليها, ولكن يبدو أن هناك بعض الارتباك على قدم وساق و فكرت أن تساعد في إزالة بعض من ذلك لأن هذا هو قادم عالية في عمليات البحث جوجل.

وأي من هذه عملت بالنسبة لي، لذلك حاولت هذه، التي عملت:

ونوع :%s/

واضغط على CTRL-V CTRL-M

ونوع //g

واضغط على أدخل

وهكذا القيادة العامة في فيم فهذه تبدو :%s/^M//g

وهذا ما يفعله: :%s (ايجاد واستبدال) /^M/ (هذا الرمز) / (مع عدم وجود حرف) g (عالميا)

ودون الحاجة إلى استخدام السيطرة:     :%s/\r$//

وشيء بسيط التي عملت بالنسبة لي

dos2unix   filename

وفعلت ذلك مع الحوار الاقتصادي الاستراتيجي:

وsed -i -e 's/\r/\n/g' filename

و^ يتم استرداد M التي كتبها السيطرة + V و M ، لذلك

s/^M//g

وماذا عن مجرد: :%s/\r//g التي عملت تماما بالنسبة لي.

وهذا ما يفعله هو فقط لتنظيف نهاية خط كل الخطوط، فإنه يزيل ^ M وهذا كل شيء.

Ctrl+م يقلل من نافذتي ، ولكن Ctrl+أدخل في الواقع يدخل ^M حرف.كما ينبغي التأكد من عدم رفع قبالة Ctrl الرئيسية بين المطابع.

وبالتالي فإن الحل بالنسبة لي هو:

:%s/<Ctrl-V><Ctrl-Enter>/\r/g

حيث <Ctrl-V><Ctrl-Enter> يعني اضغط مع الاستمرار Ctrl, اضغط V, اضغط أدخل, ثم حرر Ctrl.

إذا كنت تعمل على ويندوز-إنشاء ملف

الحل أعلاه إضافة سطر إضافي بين الخطوط الموجودة ، لأن هناك بالفعل غير مرئية \r بعد ^M.

لمنع هذا ، كنت ترغب في حذف ^M الشخصيات دون استبدالها.

:%s/<Ctrl-V><Ctrl-Enter>//g

حيث % يعني "في هذا المخزن المؤقت" s يعني "بديلا،" / يعني "(تجد) للنمط التالي" <Ctrl-V><Ctrl-Enter> يشير إلى مفاتيح اضغط على ^M حرف (انظر أعلاه) ، // يعني "لا شيء" (أو "مع نمط بين هذين مائلة ، وهي فارغة") ، g هو العلم معنى "عالميا" بدلا من التواجد الأول في خط.

هناك العديد من الإجابات على هذا السؤال, ولكن لا يزال التالية يعمل على نحو أفضل بالنسبة لي ، أنا في حاجة إلى سطر الأوامر الحل:

vim -u NONE -c 'e ++ff=dos' -c 'w ++ff=unix' -c q myfile

التفسير:

  • دون تحميل أي .vimrc ملفات مفتوحة myfile
  • تشغيل :e ++ff=dos لفرض إعادة تحميل الملف بأكمله كما دوس خط النهايات.
  • تشغيل :w ++ff=unix لكتابة الملف باستخدام unix خط النهايات
  • استقال همة

هذا العمل بالنسبة لي:

  1. تعيين تنسيق الملف إلى unix (\n خط النهاية)
  2. حفظ الملف

حتى في همة:

:set ff=unix
:w

في حالتي،

لا شيء فوق عملت، كنت قد ملف CSV نسخها إلى جهاز لينكس من وجهة نظري ماك وكنت انتظر الأوامر المذكورة أعلاه ولكن لا شيء ساعد ولكن أقل من واحد

tr "\015" "\n" < inputfile > outputfile

وكان لي الملف الذي تم sandwitched ^ M الأحرف بين خطوط شيء من هذا القبيل أدناه

Audi,A4,35 TFSi Premium,,CAAUA4TP^MB01BNKT6TG,TRO_WBFB_500,Trico,CARS,Audi,A4,35 TFSi Premium,,CAAUA4TP^MB01BNKTG0A,TRO_WB_T500,Trico,

وبدلا من ذلك، هناك دعا dos2unix المرافق وunix2dos المصدر المفتوح المتاحة التي تفعل هذا الشيء. على نظام لينكس وربما تثبيتها بشكل افتراضي؛ لنظام ويندوز يمكنك تحميلها من http://www.bastet.com/ وغيرها.

sed s/^M//g file1.txt > file2.txt

وحيث ^ يتم كتابتها M من قبل نفس الوقت الضغط على 3 مفاتيح، CTRL + V + م

واستخدام dos2unix فائدة إذا تم إنشاء الملف على النوافذ، استخدام أداة mac2unix إذا تم إنشاء الملف على لجنة الهدنة العسكرية. :)

وهذا عمل بالنسبة لي:

:% s/\r\n/\r

ل حفظ المفاتيح ، أو يمكنك تجنب الكتابة السيطرة + V السيطرة + M عن طريق وضع هذا في رسم الخرائط. مجرد فتح ملف يحتوي على حرف ^ M، نثر عليه، ولصقه في مثل هذا الخط في .vimrc الخاص بك:

nnoremap <Leader>d :%s/^M//g<CR>

وأيا من هذه الاقتراحات يعملون بالنسبة لي بعد أن تمكن من الحصول على شحنة من فواصل الأسطر ^M بينما كان يعمل مع كل من همة والكسوف. وأظن أن واجهت حالة الخارجية ولكن في حالة أنه يساعد أي شخص فعلت.

:%s/.$//g

وذلك تسويتها مشكلتي

:g/^M/s// /g

إذا قمت بكتابة ^M باستخدام Shift+6 Caps+M فإنه لن يقبل.

وتحتاج إلى كتابة ctrl+v ctrl+m.

و^M يعطي فواصل الأسطر غير المرغوب فيها. للتعامل مع هذا يمكننا استخدام الأمر sed كما يلي:

sed 's/\r//g'

وفقط removeset binary في .vimrc الخاص بك!

استخدم أحد هذه الأوامر:

:%s/\r//g

أو

:%s/\r\(\n\)/\1/g

و"يحافظ على هذه الوظيفة قائمة يقفز

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()

وقضيت بعد الظهر يعانون من \ ن CTRL-V 012 (كلاهما العرض لي مع فارغة). وجاهد من خلال هذا الموضوع حتى وصلت في metagrapher.

و\r سار على ما يرام بالنسبة لي!

/),/s/),/)\r/g

وشيء تحول مثل هذا:

<اقتباس فقرة>   

والقائمة السوداء اضافية: I386 (0.4.1، 0.4.1 + nmu1)، libmount1: I386 (2.20.1-5.1، 2.20.1 -5.2)، libblkid1: I386 (2.20.1-5.1، 2.20.1 -5.2)، libapt-pkg4.12: I386 (0.9.7.4، 0.9.7.5)، NMAP: I386 (6،00 حتي 0،1، 6،00 حتي 0،2)،-libsane شيوعا: I386 (1.0.22-7.3،

وإلى شيء من هذا القبيل:

<اقتباس فقرة>   

و26 libwv-1،2-4: I386 (1.2.9-3، التلقائي)
     27 openjdk-6-جري-مقطوعة الرأس: I386 (6b24-1.11.4-3، التلقائي)
     28 جد: I386 (0.99.19-2.1)

والسحر. أنا ممتن بشدة

وأو بدلا من استخدام همة يمكنك إصلاح مجرد فواصل الأسطر باستخدام هذا الأمر

fromdos <filename.txt>

ونأمل أن يساعد!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top