Vi di Linux: tampilkan ^ M akhiran baris untuk file berformat DOS

10

Pada Solaris, jika Anda membuka file in vi yang memiliki ujung garis Windows, ini muncul sebagai ^ M di akhir setiap baris.

Di Linux, vi lebih pintar dan memahami format file Windows, dan tidak menampilkan ^ M.

Apakah ada pengaturan untuk membuat Linux vi berperilaku sama dengan Solaris dalam hal ini?

Masalah umum bagi kita adalah menyalin skrip shell dari kotak dev (Windows) dan lupa untuk dos2unix itu, dan kemudian menjadi bingung ketika itu tidak berfungsi dengan baik. Pada Solaris masalahnya jelas segera setelah Anda vi file, tetapi tidak di Linux.

Terima kasih.

sss
sumber
Di Linux, vi biasanya vim Bram Moolenaar , saya berharap vi di Solaris adalah Bill Joy vi , asli, asli tetapi kurang mampu.
RedGrittyBrick
Pada saya vim, secara default saya biasanya melihat tidak ^M, tetapi kadang-kadang ada satu di akhir file.
trysis

Jawaban:

10

Coba :set ffs=unixketika memulai vi (atau atur sebagai default di vimrc) yang akan menampilkan semua karakter CR sebagai ^M.

vi menebak secara otomatis format mana yang digunakan berdasarkan apakah atau tidak memenuhi garis yang berakhir dengan hanya LF atau keduanya CR / LF.

Garrett
sumber
2
@RedGrittyBrick - Di sistem saya, :set listditampilkan $di akhir semua baris (format Unix & DOS), jadi tidak membantu membedakan keduanya.
sss
@sss: Kesalahan saya, saya akan menghapus komentar.
RedGrittyBrick
2
@man - perintah ini tidak bekerja untuk saya tepatnya - saya dapatkan Not an editor command: ffs=unix- tetapi mengatur saya di jalan yang benar. Menjalankan :set ffs=unixdengan file yang terbuka di vi tidak bekerja - tidak ada kesalahan tetapi tidak ada yang terjadi. Saya memasukkan set ffs=unixfile .vimrc saya dan itu berhasil.
sss
Saya mengalami hal yang persis sama dengan @sss
SSH
Dengan demikian merusak konfigurasi pengguna yang disiapkan dengan cermat. Saya kemungkinan besar menginginkan ffsapa adanya. Tapi lihat jawabannya dari @wisbucky.
fork0
2

Untuk menampilkan akhiran baris dos untuk file saat ini:

:e +ff=unix

Ini memaksa format file untuk unix, yang akan dirender CRsebagai^M


Untuk menjadikan pengaturan ini permanen, tambahkan ke ~/.vimrc:

set ffs=unix

Perhatikan bahwa pengaturan .vimrc ffstidak ff.

wisbucky
sumber
Ini seharusnya :e ++ff=unix, saya percaya.
fork0
0

:e ++ff=unix

(per fork0) 54321

Jan Kyu Peblik
sumber