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 listdi Vim akan menampilkan spasi putih. Akhir baris ditampilkan sebagai ' $' dan carriage return biasanya ditampilkan sebagai ' ^M'.
:set listTIDAK akan menampilkan ^Mkarakter (CR). Menyediakan -bopsi untuk vi / vim akan berhasil. Atau, setelah vim dimuat, ketik::e ++ff=unix
:set nolist
Untuk tidak setuju dengan jawaban resmi:
:set listtidak akan menampilkan ^ M karakter (CRs). Memasok opsi -b ke vi / vim akan berhasil. Atau, setelah vim dimuat, ketikkan :e ++ff=unix.
:help editmenunjukkan e[dit]! [++opt] [+cmd]. Dan :help ++emengatakan argumen [++ opt] dapat digunakan untuk memaksa nilai 'fileformat' [..] .
:set listmenunjukkan baris baru ( $), :e ++ff=unixmenunjukkan CR ( ^M); jika Anda ingin melihat keduanya, :set listmaka:e ++ff=unix
:set ff=unixtahu 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=unixmemintanya untuk secara paksa mengatur format file sebagai unixtanpa benar-benar mengubah konten. Jadi, vim membacanya seperti file Unix, melihat karakter CR sebagai ekstra dan menampilkannya sebagai ^ M.
vimuntuk beberapa alasan ... Maksud saya tidak ada -bpilihan, atau :e ++ff=unixketika di dalam :(
VI menunjukkan baris baru (karakter LF, kode x0A) dengan menunjukkan teks berikutnya pada baris berikutnya.
Gunakan -bsakelar untuk mode biner. Misalnya vi -b filenameatau vim -b filename --.
Ini kemudian akan menampilkan karakter CR ( x0D), yang biasanya tidak digunakan dalam file gaya Unix, sebagai karakter ^M.
Unixlingkungan. Tapi saya ingin diperingatkan tentang ujung tipe Windows jika ada dalam file. Apakah vi -b filenameatau :set binaryhanya akan menunjukkan ^Mapakah itu file jenis windows dan tidak ada akhiran baris lain?
Hanya untuk mengklarifikasi mengapa :set listtidak akan menunjukkan CR sebagai ^Mtanpa e ++ff=unixdan mengapa :set listtidak 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, macdan unixmasing - masing.
Ketika listopsi diatur, Vim menampilkan $karakter ketika jeda baris terjadi, apa pun fileformatopsi 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 fileformatopsi apa yang telah terdeteksi, pada dasarnya mengubah semua internal $dengan karakter yang sesuai. Jika fileformatkebetulan unixmaka itu hanya akan menulis\n di tempat line-break internal.
Caranya adalah dengan memaksa Vim untuk membaca dosfile yang disandikan sebagai unixsatu. 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 listakan menunjukkan akhir baris internal sebagai $. Setelah semua, Anda lihat ^M$di tempatdos garis yang disandikan.
Perhatikan juga bahwa :set listtidak ada hubungannya dengan pertunjukan ^M. Anda dapat memeriksanya sendiri (pastikan Anda telah menonaktifkan listopsi terlebih dahulu) dengan memasukkan CR tunggal CTRL-Vdiikuti dengan Entermode insert. Setelah menulis buffer ke disk dan membukanya lagi Anda akan melihat ^Mmeskipunlist 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 binarytidak sama dengan vim -b filename.py. Ada yang tahu kenapa? Saya memang memeriksa helpdan sepertinya apa yang Anda katakan pada umumnya benar. Bagaimana saya mencari tahu mengapa demikian?
:e ++ff=unixtidak menunjukkan dengan ^Mbenar dan tidak menunjukkannya ketika saya menggunakan unixjenis 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 catdan -AAnda 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.