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?
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.
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.
Hello%$
untuk file DOS (di mana%
CR dan$
aLF
)? Ini tidak mungkin dengan pengaturanlist
/listchars
, dan saya tidak bisa benar-benar datang dengan cara untuk melakukan ini di VimScript baik ...set list
apakah ada cara untuk memilikiCR
danLF
menunjukkan karakter tertentu?set stl+=\ [%{&ff=='mac'?'CR':&ff=='unix'?'LF':'CRLF'}]
Jawaban:
Dengan beberapa peringatan, Anda dapat melakukan ini menggunakan mode biner Vim. Sepertinya Anda mungkin ingin menggunakan perintah
Atau, Anda dapat memasukkan yang berikut ini di
.vimrc
: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:
'textwidth'
ke 0'wrapmargin'
ke 0'modeline'
'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'
sumber
but it does quite a few other things as well
apakah ini karena biner adalahFileType
dengan beberapa perintah otomatis atau itu semacam built in, hal yang tidak dapat dihindari?FileType
dipanggilbinary
dengan perintah-perintah otomatis atau hanya beberapa hal yang dibangun?:help 'binary'
. Dan mungkin:help 'fileformat'
.Jika Anda menambahkan ke
~/.vimrc
:Itu akan selalu ditampilkan
CR
sebagai^M
danLF
sebagai$
.Secara default, vim akan menginterpretasikan file yang hanya memiliki
CRLF
akhiran sebagai file dos dan ditampilkanCRLF
sebagai$
. Dengan menetapkanffs=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 aLF
. Anda harus memasukkan secara manualCR
dengan mengetikCTRL+V, CTRL+M
.sumber