Tampilkan CR dan LF daripada "EOL" di ': set list'

12

Daripada memilih satu karakter untuk ditampilkan sebagai karakter EOL, saya ingin satu untuk ditampilkan untuk CR dan LF secara terpisah dan terlepas dari apakah file tersebut unix atau dos. Apakah ini mungkin?

Kapten Man
sumber
2
Jadi jika saya mengerti Anda dengan benar, Anda menginginkan sesuatu seperti Hello%$untuk file DOS (di mana %CR dan $a LF)? Ini tidak mungkin dengan pengaturan list/ listchars, dan saya tidak bisa benar-benar datang dengan cara untuk melakukan ini di VimScript baik ...
Martin Tournoij
1
@Carpetsmoker Itu benar. Terlepas dari set listapakah ada cara untuk memiliki CRdan LFmenunjukkan karakter tertentu?
Kapten Man
2
Anda mungkin dapat menyorotinya dengan warna tertentu, tetapi tidak ada cara untuk menunjukkannya sebagai karakter khusus yang tidak afaik.
EvergreenTree
Saya pikir CR atau LF dapat dilihat pada satu waktu, bukan keduanya.
SibiCoder
1
set stl+=\ [%{&ff=='mac'?'CR':&ff=='unix'?'LF':'CRLF'}]
Antony

Jawaban:

2

Dengan beberapa peringatan, Anda dapat melakukan ini menggunakan mode biner Vim. Sepertinya Anda mungkin ingin menggunakan perintah

vim -b +'set list' somefile

Atau, Anda dapat memasukkan yang berikut ini di .vimrc:

:set binary
:set list

Yang penting adalah bahwa mode biner harus diatur sebelum file tersebut dibaca menjadi buffer. Setelah Vim membaca file, sudah terlambat; Trik ini bergantung pada perubahan cara Vim membaca file. Secara khusus, apa yang Anda butuhkan adalah Vim untuk tidak mencoba menebak jenis file tertentu <EOL>.

Mode biner melakukan apa yang Anda inginkan, menonaktifkan deteksi pemisah garis otomatis ini, tetapi melakukan beberapa hal lain juga:

  • set 'textwidth'ke 0
  • set 'wrapmargin'ke 0
  • unsets 'modeline'
  • unsets 'expandtab'

Jadi, Anda mungkin tidak ingin memiliki ini di Anda .vimrc; mungkin lebih baik menggunakan versi command-line, dan hanya untuk file-file itu di mana Anda memerlukan jenis tampilan khusus ini.

Untuk informasi lebih lanjut:

  • :help 'binary'
  • :help edit-binary
  • :help file-read
  • :help file-formats
  • :help 'fileformat'
Ptolemarch
sumber
but it does quite a few other things as wellapakah ini karena biner adalah FileTypedengan beberapa perintah otomatis atau itu semacam built in, hal yang tidak dapat dihindari?
Kapten Man
Dengan ungkapan itu, saya bermaksud memperkenalkan daftar yang segera mengikutinya.
Ptolemarch
Benar, saya hanya tidak mengutip semuanya :) Apa yang saya maksud adalah apakah ia melakukan hal-hal itu karena menggunakan beberapa yang FileTypedipanggil binarydengan perintah-perintah otomatis atau hanya beberapa hal yang dibangun?
Kapten Man
1
Ah benar Semua ini tidak ada hubungannya dengan jenis file (tetapi cukup terperangkap dalam format file). ini adalah bagian dari mode biner itu sendiri. Lihat :help 'binary'. Dan mungkin :help 'fileformat'.
Ptolemarch
0

Jika Anda menambahkan ke ~/.vimrc:

set ffs=unix
set list

Itu akan selalu ditampilkan CRsebagai ^Mdan LFsebagai $.

Secara default, vim akan menginterpretasikan file yang hanya memiliki CRLFakhiran sebagai file dos dan ditampilkan CRLFsebagai $. Dengan menetapkan ffs=unix, Anda memaksa vim untuk selalu terbuka sebagai file unix, dan oleh karena itu CR diperlakukan sebagai karakter tambahan.

Catatan: Hati-hati jika memodifikasi dan menyimpan file dos. Jika Anda menekan ENTER, itu hanya akan memasukkan a LF. Anda harus memasukkan secara manual CRdengan mengetik CTRL+V, CTRL+M.

wisbucky
sumber