Cum de a converti ^M linebreak la 'normal' linebreak într-un fișier deschis în vim?

vim prezinta pe fiecare linie se termină ^M

Cum fac să le înlocuiască cu un 'normal' linebreak?

Comentarii la întrebare (3)

Command

:%s//\r/g

Unde <Ctrl-V><Ctrl-M> înseamnă de tip Ctrl+V apoi Ctrl+M.

Explicatie

:%s

substitut, % = toate liniile

^M caractere (Ctrl-V este un Vim mod de a scrie Ctrl ^ caracterul și Ctrl-M scrie M, după expresia regulată, ducând la ^M caractere speciale)

/\r/

cu noua linie (\r)

g

Și face la nivel global (nu doar prima apariție pe linie).

Comentarii (23)

Pe Linux și Mac OS, următoarele lucrări,

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

unde ^V^M înseamnă de tip Ctrl+V, apoi Ctrl+M.

Notă: pe Windows probabil că doriți să utilizați ^Q "în loc de" ^V, deoarece în mod implicit ^V este mapat pentru a lipi textul.

Comentarii (26)

În vim, uita-te la formatul de fișier — DOS sau Unix:

`:set filetype=unix`

:set fileformat=unix

Fișierul va fi scris fără retur de car (CR, ^M) de caractere.

Comentarii (9)
Soluția

Acesta este singurul lucru care a functionat pentru mine:

:e ++ff=dos

Gasit la: http://vim.wikia.com/wiki/File_format

Comentarii (6)

Un fișier care am creat-o cu BBEdit văzut în MacVim a fost afișând o grămadă de ^M linie de returnare în loc de cele obișnuite. Următorul șir înlocui rezolvat problema - sper că acest lucru ajută:

:%s/\r/\r/g

L's interesant, pentru că am'm înlocuirea pauze de linie, cu același caracter, dar cred că Vim are nevoie doar pentru a obține o curat \r pentru a afișa în mod corect. Am'd fi interesat să știu de fond al sistemului mecanica de ce funcționează.

Comentarii (7)

Primul, folosi `:set ff? să-mi dau seama formatul de fișier fișierul dvs. este.

Cred că ar putea fi unix, atunci problema este fișierul dvs. a fost creat cu fileformat=dosadăugarea "^M^J" la linia de final, dar citesc cuflieformat=unix` numai eliminarea "^J" de la linia de final, lăsând "^M" nu.

Doar de intrare :e ++ff=dos în Vim linie de comandă pentru a modifica fișierul dvs.'s a format de la unix la dos. Acesta ar trebui să rezolve problema. Dacă nu, :%s/\r//g ar trebui să te ajute.

Comentarii (1)

în scopul de a obține ^M de caractere pentru a se potrivi trebuit să-vizual, selectați-l și apoi utilizați sistemul de OPERARE copiați în clipboard pentru a prelua comanda-l. Îl puteți testa prin a face o căutare pentru caracterul înainte de a încerca să înlocuiască comanda.

/^M

ar trebui să selectați prima linie de rau

:%s/^M/\r/g

va înlocui toate rătăcitor ^M cu transportul de returnare.

Acest lucru este la fel de funcții în MacVim, care se bazează pe gvim 7.

EDIT:

Având această problemă din nou pe Windows 10 mașină, care are Ubuntu pentru Windows, și cred că aceasta este cauza fileformat probleme pentru vim. În acest caz, schimbarea ff unix, mac, sau dos făcut nimic altceva decât să schimbe ^M ^J și înapoi din nou.

Soluția în acest caz:

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

Motivul pentru care am mers pe acest traseu este pentru că am vrut să se asigure că am fost non-distructivă cu dosarul meu. Am putea avea :%s/\r$//g dar care ar fi șters transportul se întoarce imediat, și ar fi putut avea rezultate neașteptate. În schimb ne-am converti singular CR personaj, aici o ^M personaj, într-un spațiu, și apoi scoateți toate spațiile de la sfârșitul liniilor (care pentru mine este un rezultat dorit, indiferent)

Îmi pare rău pentru revigorarea o întrebare veche, care a fost mult timp de când a răspuns, dar nu părea să fie o confuzie pe jos și am crezut că am'd ajuta clar sus, deoarece acest lucru vine de sus în căutările google.

Comentarii (3)

Nici unul dintre acestea a lucrat pentru mine, așa că am încercat acest lucru, care a lucrat:

tip :%s/

apăsați CTRL-VCTRL-M

tip //g

apăsați Enter

Deci totalul de comandă în Vim shoud arata ca :%s/^M//g

Ce face asta: :%s (find and replace) /^M/ (ca simbol) / (cu nr de caractere) " g " (la nivel global).

Comentarii (1)

Fără a fi nevoie să utilizați Ctrl: :%s/\r$//

Comentarii (3)

^M este preluat de Ctrl+V și M, deci, nu

s/^M//g
Comentarii (0)

Simplu lucru pe care a lucrat pentru mine

dos2unix   filename
Comentarii (0)

Am făcut acest lucru cu sed:

sed -i-e &#39;s/\r/\n/g&#39; filename

Comentarii (3)

Ce zici de: :%s/\r//g Că totul a lucrat pentru mine.

Ce este acest lucru nu este doar pentru a curăța capăt de linie pentru toate liniile, se elimină ^M și care's a.

Comentarii (0)

Există multe alte răspunsuri la această întrebare, dar, totuși, următoarele funcționează cel mai bine pentru mine, ca am nevoie de o linie de comandă soluție:

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

Explicație:

  • Fără încărcare orice .vimrc fișierele, deschide myfile
  • Run:e ++ff=dos` pentru a forța o reîncărcare a întregului fișier ca dos capetele de linie.
  • Run :w ++ff=unix pentru a scrie fișierul folosind unix capetele de linie
  • Nu mai vim
Comentarii (1)

Ctrl+M minimizează fereastra mea, dar Ctrl+Enter de fapt introduce o ^M caracter. Am avut, de asemenea, să fie sigur că nu pentru a ridica de pe Ctrl cheie între prese.

Deci solutia pentru mine a fost:

:%s//\r/g

Unde ` înseamnă apăsați și mențineți apăsată tasta Ctrl, apăsați și eliberați V, apăsați și eliberați Enter, și apoi eliberați - Ctrl.

Dacă sunteți de lucru pe un Windows generate de fișiere

Soluția de mai sus se va adăuga o linie suplimentară între liniile existente, pentru că există deja un invizibil \r după ^M.

Pentru a preveni acest lucru, doriți să ștergeți ^M caractere fără a le înlocui.

:%s///g

Unde % înseamnă "în acest buffer," " s "înseamnă "membru supleant,"" / " înseamnă "(găsi) următorul model," <Ctrl-V><Ctrl-Enter> se referă la taste să apăsați pentru a obține ^M personaj (a se vedea mai sus), // înseamnă "nimic" (sau, "cu tiparul între aceste două linii oblice, care este gol"), și " g " este un steag sensul "la nivel global," spre deosebire de prima apariție într-o linie.

Comentarii (0)

În cazul meu,

Nimic mai lucrat, am avut un fișier CSV copiat la mașină Linux de la mac-ul meu și am folosit toate comenzile de mai sus, dar nimic nu a ajutat, dar cea de mai jos

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

Am avut un dosar în care ^M personaje au fost sandwitched între linii ceva de genul de mai jos

Audi,A4,35 TFSi Premium,,CAAUA4TP^MB01BNKT6TG,TRO_WBFB_500,Trico,CARS,Audi,A4,35 TFSi Premium,,CAAUA4TP^MB01BNKTG0A,TRO_WB_T500,Trico,
Comentarii (0)

Aceasta a lucrat pentru mine:

  1. Set format de fișier unix (\n de sfârșit de linie)
  2. salvați fișierul

Deci, în vim:

:set ff=unix
:w
Comentarii (3)

Alternativ, sunt open-source utilități numit dos2unix și unix2dos disponibile, care face acest lucru. Pe un sistem linux, acestea sunt, probabil, instalat în mod implicit; pentru un sistem windows le puteți descărca de http://www.bastet.com/, printre altele.

Comentarii (0)
sed s/^M//g file1.txt > file2.txt

unde ^M se introduce prin apăsarea simultană a 3 chei, ctrl + v + m

Comentarii (0)

utilizarea dos2unix utilitate dacă fișierul a fost creat pe windows, utilizarea mac2unix utilitate dacă fișierul a fost creat pe mac. :)

Comentarii (2)