Cara mengkonversi ^M linebreak untuk 'normal' linebreak dalam file yang dibuka di vim?

vim menunjukkan pada setiap baris ending ^M

Cara yang saya lakukan untuk mengganti ini dengan 'normal' linebreak?

Mengomentari pertanyaan (3)

Perintah

:%s//\r/g

Di mana <Ctrl-V><Ctrl-M> berarti jenis Pilih+V maka Pilih+M.

Penjelasan

:%s

pengganti, % = semua lini

^M karakter (Ctrl-V adalah Vim cara penulisan Ctrl ^ karakter dan Ctrl-M menulis M setelah ekspresi reguler, sehingga ^M karakter khusus)

/\r/

dengan baris baru (\r)

g

Dan melakukannya secara global (bukan hanya kejadian pertama pada baris).

Komentar (23)

Pada Linux dan Mac OS, karya-karya berikut,

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

di mana ^V^M berarti jenis Pilih+V, maka Pilih+M.

Catatan: pada Windows, anda mungkin ingin menggunakan ^Q bukan ^V, karena secara default ^V dipetakan untuk paste teks.

Komentar (26)

Dalam vim, melihat file format — DOS atau Unix:

:set filetype=unix

:mengatur format=unix

File yang akan ditulis kembali tanpa carriage return (CR, ^M) karakter.

Komentar (9)
Larutan

Ini adalah satu-satunya hal yang bekerja untuk saya:

:e ++ff=dos

Ditemukan di: http://vim.wikia.com/wiki/File_format

Komentar (6)

File yang saya telah dibuat dengan BBEdit dilihat di Joomla menampilkan sekelompok ^M kembali bukan yang reguler. Berikut mengganti string memecahkan masalah - semoga ini bisa membantu:

:%s/\r/\r/g

It's menarik karena saya'm mengganti baris dengan karakter yang sama, tapi saya kira Vim hanya perlu untuk mendapatkan segar \r untuk menampilkan dengan benar. I'a akan tertarik untuk mengetahui mekanisme yang mendasari mengapa ini bekerja.

Komentar (7)

Pertama, gunakan :set ff? untuk mengetahui format file file anda.

Saya kira itu bisa menjadi unix, maka masalah adalah file yang dibuat dengan format=dos menambahkan "^M^J" ke garis akhir tapi baca dengan flieformat=unix hanya menghapus "^J" dari garis akhir, meninggalkan "^M" di sana.

Hanya masukan :e ++ff=dos di Vim baris perintah untuk mengubah file's format dari unix untuk dos. Ini harus memecahkan masalah. Jika tidak, :%s/\r//g akan membantu anda keluar.

Komentar (1)

dalam rangka untuk mendapatkan ^M karakter untuk pertandingan saya harus visual pilih dan kemudian menggunakan OS copy ke clipboard perintah untuk mengambilnya. Anda dapat mengujinya dengan melakukan pencarian untuk karakter sebelum mencoba mengganti perintah.

/^M

harus pilih yang pertama buruk baris

:%s/^M/\r/g

akan mengganti semua bandel ^M dengan kereta kembali.

Ini adalah sebagai fungsi dalam Joomla, yang didasarkan pada gvim 7.

EDIT:

Mengalami masalah ini di Windows 10 mesin, yang telah Ubuntu untuk Windows, dan saya pikir ini adalah yang menyebabkan format isu-isu untuk vim. Dalam hal ini mengubah ff untuk unix, mac, atau dos memang tidak lain dari untuk mengubah ^M ^J dan kembali lagi.

Solusi dalam hal ini:

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

Alasan saya pergi rute ini adalah karena saya ingin memastikan saya sedang non-destruktif dengan file saya. Aku bisa :%s/\r$//g tapi itu akan dihapus kereta kembali keluar, dan bisa memiliki hasil yang tak terduga. Sebaliknya kita mengkonversi tunggal CR karakter, di sini ^M karakter, ke ruang angkasa, dan kemudian menghapus semua spasi pada akhir baris (yang bagi saya adalah yang diinginkan terlepas)

Maaf untuk menghidupkan kembali sebuah pertanyaan lama yang sudah sejak lama dijawab, tapi tampaknya ada beberapa kebingungan yang sedang terjadi dan saya pikir saya'd membantu menghapus beberapa dari itu karena ini akan datang tinggi di pencarian google.

Komentar (3)

Tak satu pun dari ini bekerja untuk saya, jadi saya mencoba ini, yang bekerja:

type :%s/

tekan CTRL-VCTRL-M

ketik //g

tekan Enter

Jadi secara keseluruhan perintah Vim shoud terlihat seperti :%s/^M//g

Apa hal ini: :%s (find and replace) /^M/ (simbol) / (tanpa karakter) g (secara global).

Komentar (1)

Tanpa perlu menggunakan Ctrl: :%s/\r$//

Komentar (3)

^M diambil oleh Pilih+V dan M, jadi jangan

s/^M//g
Komentar (0)

Hal sederhana yang bekerja untuk saya

dos2unix   filename
Komentar (0)

Saya melakukan ini dengan sed:

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

Komentar (3)

Tentang apa saja: :%s/\r//g Yang benar-benar bekerja untuk saya.

Apa ini tidak hanya untuk membersihkan akhir baris dari semua lini, menghilangkan ^M dan yang's ini.

Komentar (0)

Ada banyak jawaban untuk pertanyaan ini, tapi tetap saja, berikut karya-karya yang terbaik untuk saya, karena saya butuh command line solusi:

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

Penjelasan:

  • Tanpa beban apapun .vimrc file, open myfile
  • Jalankan :e ++ff=dos untuk memaksa ulang seluruh file seperti dos akhir baris.
  • Jalankan :w ++ff=unix untuk menulis file menggunakan unix akhir baris
  • Berhenti vim
Komentar (1)

Pilih+M meminimalkan jendela saya, tapi Pilih+Enter benar-benar memasukkan ^M karakter. Saya juga harus memastikan untuk tidak mengangkat dari Pilih kunci antara menekan.

Jadi solusi bagi saya adalah:

:%s//\r/g

Di mana <Ctrl-V><Ctrl-Enter> berarti tekan dan tahan Pilih, tekan dan lepaskan V, tekan dan lepaskan Enter, dan kemudian melepaskan Pilih.

Jika anda bekerja pada Windows-berkas yang dihasilkan

Solusi di atas akan menambahkan baris tambahan antara garis yang ada, karena sudah ada aplikasi yang tak terlihat \r setelah ^M.

Untuk mencegah hal ini, anda ingin menghapus ^M karakter tanpa menggantinya.

:%s///g

Di mana % berarti "dalam buffer ini," s berarti "pengganti," / berarti "(menemukan) pola berikut," <Ctrl-V><Ctrl-Enter> mengacu pada tombol untuk menekan untuk mendapatkan ^M karakter (lihat di atas), // berarti "dengan tidak ada" (atau, "dengan pola antara dua garis miring, yang kosong"), dan g adalah bendera artinya "secara global," sebagai lawan kejadian pertama dalam satu baris.

Komentar (0)

Dalam kasus saya,

Tidak ada yang di atas bekerja, saya punya CSV file disalin ke mesin Linux dari mac saya dan saya digunakan semua perintah di atas tapi tidak ada yang membantu, tapi di bawah satu

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

Saya punya file di mana ^M karakter sandwitched antara garis sesuatu seperti di bawah ini

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

Ini bekerja untuk saya:

  1. Mengatur format file untuk unix (\n baris ending)
  2. simpan file

Jadi dalam vim:

:set ff=unix
:w
Komentar (3)

Selain itu, terdapat open source utilitas yang disebut dos2unix dan unix2dos tersedia yang melakukan hal ini. Pada sistem linux mereka mungkin diinstal secara default; untuk sistem windows anda dapat men-download mereka dari http://www.bastet.com/ antara lain.

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

mana ^M diketik dengan menekan tombol 3, ctrl + v + m

Komentar (0)

gunakan dos2unix utilitas jika file yang dibuat pada windows, gunakan mac2unix utilitas jika file yang dibuat di mac. :)

Komentar (2)