Ketika saya membuka file vim
, saya melihat ^M
karakter aneh .
Sayangnya, mesin pencari favorit di dunia tidak bekerja dengan baik dengan karakter khusus dalam permintaan, jadi saya bertanya di sini:
^M
Karakter apa ini ?Bagaimana itu bisa ada di sana?
Bagaimana saya menyingkirkannya?
vim
special-characters
Christoph Wurm
sumber
sumber
help digraph-table
.Jawaban:
Ini
^M
adalah karakter carriage-return. Jika Anda melihat ini, Anda mungkin melihat file yang berasal dari dunia DOS / Windows, di mana end-of-line ditandai oleh pasangan carriage return / newline, sedangkan di dunia Unix, end-of-line ditandai oleh satu baris baru.Baca artikel ini untuk detail lebih lanjut, dan juga entri Wikipedia untuk baris baru .
Artikel ini membahas cara mengatur vim untuk mengedit file secara transparan dengan berbagai penanda end-of-line.
Jika Anda memiliki file dengan
^M
di akhir beberapa baris dan Anda ingin menyingkirkannya, gunakan ini di Vim:(Tekan Ctrl+ V Ctrl+ Muntuk menyisipkan itu
^M
.)sumber
:%s/^M/\r/g
Alih-alih, coba hapus^M
dan ganti^M
dengan karakter baris baru\r
. Tanpa%
, perintah hanya berlaku untuk baris saat ini. Dan saya menemukan beberapa contoh di mana^M
tidak ada di ujung jalur, sepertiThe first line.^MThe second line.
:%s/^M/
^M
ini digunakan di UNIX\n
digunakan di Unix, mana yang benar. Itu adalah kode ASCII10
, atau dikenal sebagai^J
.Sebagian besar sistem operasi UNIX memiliki utilitas yang disebut
dos2unix
yang akan mengubah CRLF ke LF. Jawaban lainnya mencakup pertanyaan "apa yang mereka".sumber
Cara sederhana untuk melakukan ini adalah dengan menggunakan perintah berikut:
Perintah ini juga berfungsi dengan pola lintasan, Eg
Jika tidak berhasil, coba gunakan mode yang berbeda:
-c
Tetapkan mode konversi. Di mana CONVMODE adalah salah satu dari:ascii, 7bit, iso, mac
denganascii
menjadi default.sumber
Ini berhasil untuk saya
Perintah: e ++ ff = dos memberi tahu Vim untuk membaca file lagi, memaksa format file dos. Vim akan menghapus ujung garis CRLF dan hanya LF, hanya menyisakan teks dari setiap baris dalam buffer.
kemudian
dan akhirnya
sumber
ff
mengacu pada format file? Bagaimana dengan++ff
?Cara lain untuk menghilangkan carriage return adalah dengan
tr
perintah.Saya memiliki skrip kecil yang terlihat seperti ini
sumber
Anda dapat membersihkan ini dengan
sed
:Caranya adalah bagaimana memasukkan carriage-return dengan benar. Secara umum, Anda perlu mengetik
C-v C-m
untuk memasukkan carriage return secara literal. Anda juga dapat melakukan pekerjaan sedsumber
Apa ini ^ M?
^ M adalah karakter carriage-return. Jika Anda melihat ini, Anda mungkin melihat file yang berasal dari dunia DOS / Windows, di mana end-of-line ditandai oleh pasangan carriage return / newline, sedangkan di dunia Unix, end-of-line ditandai oleh satu baris baru.
Bagaimana itu bisa sampai di sana?
Ketika ada perubahan dalam format file.
Bagaimana saya menyingkirkannya?
buka file Anda dengan
simpan dengan perintah berikut
sumber
Dalam hal ini,
Tidak ada yang berhasil, saya memiliki file CSV yang disalin ke mesin Linux dari mac saya dan saya menggunakan semua perintah di atas tetapi tidak ada yang membantu kecuali yang di bawah ini
Saya punya file di mana ^ M karakter sandwitched antara baris sesuatu seperti di bawah ini
sumber
Anda dapat menggunakan Vim dalam mode Ex:
-b
mode biner%
pilih semua gariss
pengganti\r
Kereta kembalix
Simpan dan tutupsumber
Tambahkan baris berikut ke ~ / .vimrc Anda
Kemudian ketika Anda memiliki file dengan ujung baris Windows, jalankan perintah ": Tounix".
sumber
Di masa lalu, saya telah melihat bahkan file konfigurasi tidak diuraikan dengan benar dan mengeluh tentang spasi putih, tetapi jika Anda vi dan melakukan daftar set itu tidak akan menampilkan spasi, grep nama file [[spasi]] akan menunjukkan kepada Anda ^ M
saat itulah
dos2unix file
membantusumber