Mai mult
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?
473
35
Command
Unde
<Ctrl-V><Ctrl-M>
înseamnă de tip Ctrl+V apoi Ctrl+M.Explicatie
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)
cu noua linie (
\r
)Și face la nivel global (nu doar prima apariție pe linie).
Pe Linux și Mac OS, următoarele lucrări,
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.În
`:set filetype=unix`vim
, uita-te la formatul de fișier — DOS sau Unix::set fileformat=unix
Fișierul va fi scris fără retur de car (CR, ^M) de caractere.
Acesta este singurul lucru care a functionat pentru mine:
Gasit la: http://vim.wikia.com/wiki/File_format
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ă: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ă.
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=dos
adăugarea "^M^J" la linia de final, dar citesc cu
flieformat=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.î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.
ar trebui să selectați prima linie de rau
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:
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.
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).Fără a fi nevoie să utilizați Ctrl:
:%s/\r$//
^M este preluat de Ctrl+V și M, deci, nu
Simplu lucru pe care a lucrat pentru mine
Am făcut acest lucru cu sed:
sed -i-e 's/\r/\n/g' filename
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.
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:
Explicație:
myfile
:w ++ff=unix
pentru a scrie fișierul folosind unix capetele de linieCtrl+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:
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.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.Î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
Am avut un dosar în care ^M personaje au fost sandwitched între linii ceva de genul de mai jos
Aceasta a lucrat pentru mine:
\n
de sfârșit de linie)Deci, în vim:
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.
unde ^M se introduce prin apăsarea simultană a 3 chei, ctrl + v + m
utilizarea dos2unix utilitate dacă fișierul a fost creat pe windows, utilizarea mac2unix utilitate dacă fișierul a fost creat pe mac. :)