vim menunjukkan pada setiap baris ending ^M
Cara yang saya lakukan untuk mengganti ini dengan 'normal' linebreak?
:%s/<Ctrl-V><Ctrl-M>/\r/g
Di mana <Ctrl-V><Ctrl-M>
berarti jenis Pilih+V maka Pilih+M.
:%s
pengganti, % = semua lini
<Ctrl-V><Ctrl-M>
^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).
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.
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.
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.
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.
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).
^M diambil oleh Pilih+V dan M, jadi jangan
s/^M//g
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:
myfile
:e ++ff=dos
untuk memaksa ulang seluruh file seperti dos akhir baris.:w ++ff=unix
untuk menulis file menggunakan unix akhir barisPilih+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/<Ctrl-V><Ctrl-Enter>/\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.
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/<Ctrl-V><Ctrl-Enter>//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.
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,
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.