Adakah yang tahu tentang editor teks di Linux yang memungkinkan saya melihat jeda baris dan carriage return? Apakah Vim mendukung fitur ini?
Adakah yang tahu tentang editor teks di Linux yang memungkinkan saya melihat jeda baris dan carriage return? Apakah Vim mendukung fitur ini?
Jawaban:
:set list
di Vim akan menampilkan spasi putih. Akhir baris ditampilkan sebagai ' $
' dan carriage return biasanya ditampilkan sebagai ' ^M
'.
:set list
TIDAK akan menampilkan ^M
karakter (CR). Menyediakan -b
opsi untuk vi / vim akan berhasil. Atau, setelah vim dimuat, ketik::e ++ff=unix
:set nolist
Untuk tidak setuju dengan jawaban resmi:
:set list
tidak akan menampilkan ^ M karakter (CRs). Memasok opsi -b ke vi / vim akan berhasil. Atau, setelah vim dimuat, ketikkan :e ++ff=unix
.
:help edit
menunjukkan e[dit]! [++opt] [+cmd]
. Dan :help ++e
mengatakan argumen [++ opt] dapat digunakan untuk memaksa nilai 'fileformat' [..] .
:set list
menunjukkan baris baru ( $
), :e ++ff=unix
menunjukkan CR ( ^M
); jika Anda ingin melihat keduanya, :set list
maka:e ++ff=unix
:set ff=unix
tahu Vim untuk mengubah akhir baris menjadi gaya unix (sebagai bagian dari pengaturan format file), sehingga karakter ^ M sudah tidak ada lagi (dan tidak ditampilkan). :e ++ff=unix
memintanya untuk secara paksa mengatur format file sebagai unix
tanpa benar-benar mengubah konten. Jadi, vim membacanya seperti file Unix, melihat karakter CR sebagai ekstra dan menampilkannya sebagai ^ M.
vim
untuk beberapa alasan ... Maksud saya tidak ada -b
pilihan, atau :e ++ff=unix
ketika di dalam :(
VI menunjukkan baris baru (karakter LF, kode x0A
) dengan menunjukkan teks berikutnya pada baris berikutnya.
Gunakan -b
sakelar untuk mode biner. Misalnya vi -b filename
atau vim -b filename --
.
Ini kemudian akan menampilkan karakter CR ( x0D
), yang biasanya tidak digunakan dalam file gaya Unix, sebagai karakter ^M
.
Unix
lingkungan. Tapi saya ingin diperingatkan tentang ujung tipe Windows jika ada dalam file. Apakah vi -b filename
atau :set binary
hanya akan menunjukkan ^M
apakah itu file jenis windows dan tidak ada akhiran baris lain?
Hanya untuk mengklarifikasi mengapa :set list
tidak akan menunjukkan CR sebagai ^M
tanpa e ++ff=unix
dan mengapa :set list
tidak ada hubungannya dengan CR ^M
.
Secara internal ketika Vim membaca file ke dalam buffernya, ia mengganti semua karakter akhir baris dengan perwakilannya sendiri (sebut saja $
itu). Untuk menentukan karakter apa yang harus dihapus, ia pertama-tama mendeteksi dalam akhiran format apa yang disimpan dalam file. Jika hanya ada CRLF '\r\n'
atau hanya CR '\r'
atau hanya '\n'
karakter akhir baris LF , maka 'fileformat'
diatur ke dos
, mac
dan unix
masing - masing.
Ketika list
opsi diatur, Vim menampilkan $
karakter ketika jeda baris terjadi, apa pun fileformat
opsi yang terdeteksi. Itu menggunakan representasi internal sendiri dari jeda baris dan itulah yang ditampilkannya.
Sekarang ketika Anda menulis buffer ke disk, Vim menyisipkan karakter akhir baris sesuai dengan fileformat
opsi apa yang telah terdeteksi, pada dasarnya mengubah semua internal $
dengan karakter yang sesuai. Jika fileformat
kebetulan unix
maka itu hanya akan menulis\n
di tempat line-break internal.
Caranya adalah dengan memaksa Vim untuk membaca dos
file yang disandikan sebagai unix
satu. Efek bersih adalah bahwa hal itu akan menghapus semua \n
's meninggalkan \r
' s tersentuh dan menampilkan mereka sebagai ^M
's dalam buffer Anda. Pengaturan juga :set list
akan menunjukkan akhir baris internal sebagai $
. Setelah semua, Anda lihat ^M$
di tempatdos
garis yang disandikan.
Perhatikan juga bahwa :set list
tidak ada hubungannya dengan pertunjukan ^M
. Anda dapat memeriksanya sendiri (pastikan Anda telah menonaktifkan list
opsi terlebih dahulu) dengan memasukkan CR tunggal CTRL-V
diikuti dengan Enter
mode insert. Setelah menulis buffer ke disk dan membukanya lagi Anda akan melihat ^M
meskipunlist
opsi diatur ke 0.
Anda dapat menemukan lebih banyak tentang format file di http://vim.wikia.com/wiki/File_format atau dengan mengetikkan :help 'fileformat'
Vim.
Coba perintah berikut.
: set binary
Dalam VIM, ini harus melakukan hal yang sama seperti menggunakan opsi baris perintah "-b". Jika Anda meletakkan ini di file startup Anda (yaitu .vimrc), file itu akan selalu ada untuk Anda.
Pada banyak sistem * nix, ada perintah "dos2unix" atau "unix2dos" yang dapat memproses file dan memperbaiki masalah yang dicurigai sebagai akhir baris. Jika tidak ada masalah dengan akhir baris, file tidak akan berubah.
set binary
tidak sama dengan vim -b filename.py
. Ada yang tahu kenapa? Saya memang memeriksa help
dan sepertinya apa yang Anda katakan pada umumnya benar. Bagaimana saya mencari tahu mengapa demikian?
:e ++ff=unix
tidak menunjukkan dengan ^M
benar dan tidak menunjukkannya ketika saya menggunakan unix
jenis file .. Jadi saya kira masalahnya terpecahkan untuk saat ini ...
Saya sarankan Anda untuk mengedit file .vimrc Anda, untuk menjalankan daftar perintah. Edit file .vimrc Anda, seperti ini:
cat >> ~/.vimrc <<EOF
set ffs=unix
set encoding=utf-8
set fileencoding=utf-8
set listchars=eol:¶
set list
EOF
Saat Anda menjalankan vim, perintah ke .vimrc dieksekusi, dan Anda dapat melihat contoh ini:
My line with CRLF eol here ^M¶
dengan menggunakan cat
dan -A
Anda dapat melihat baris baru sebagai $
, tab sebagai^I
cat -A myfile
Anda dapat melihat garis putus menggunakan gedit editor .
Pertama, jika Anda belum menginstal:
sudo apt-get install gedit
Sekarang, instal plugin gedit :
sudo apt-get install gedit-plugins
dan pilih plugin Draw Spaces , masukkan pada Preferences, dan pilih Draw baris baru
Dengan menggunakan VSCode Anda dapat menginstal ekstensi akhiran Line .
Sublime Text 3 memiliki plugin bernama RawLineEdit yang akan menampilkan akhiran baris dan memungkinkan penyisipan tipe akhiran garis sewenang-wenang
shift + ctrl + p
dan mulai ketik nama plugin, dan beralih untuk menunjukkan akhiran baris.