Lihat jeda baris dan carriage return di editor

180

Adakah yang tahu tentang editor teks di Linux yang memungkinkan saya melihat jeda baris dan carriage return? Apakah Vim mendukung fitur ini?

usertest
sumber
1
CATATAN: terkadang baris baru ($) dan carriage return (^ M) disembunyikan dalam skema warna BANYAK, dan juga saat menggunakan dempul ke ssh.
Vanessa Sanchez
1
OP Saya pikir Anda harus mempertimbangkan kembali jawaban yang dipilih. karena jawaban yang dipilih tidak berfungsi. tetapi jawaban CaptSaltyJack bekerja dengan baik.
JavaSheriff
OP Yang akan menunjukkan KEDUA adalah solusi @arno. Saya perlu melihat KEDUA, karena saya memiliki file secara acak menggunakan semua 3 format file ... Dan solusi arno bekerja
Wayne Walker

Jawaban:

139

:set listdi Vim akan menampilkan spasi putih. Akhir baris ditampilkan sebagai ' $' dan carriage return biasanya ditampilkan sebagai ' ^M'.

jay.lee
sumber
2
Pertanyaan yang sama di sini: superuser.com/questions/97692/…
Alec Jacobson
254
Salah, :set listTIDAK akan menampilkan ^Mkarakter (CR). Menyediakan -bopsi untuk vi / vim akan berhasil. Atau, setelah vim dimuat, ketik::e ++ff=unix
CaptSaltyJack
15
FYI, untuk mematikan mode "set list", gunakan:set nolist
Tomofumi
@Tomofumi hasil edit dengan posisi Anda akan disambut baik!
Pipo
1
Jawaban yang salah. : set list TIDAK akan menampilkan ^ M karakter (CRs). Gunakan opsi -b untuk vi / vim akan bekerja.
nanosoft
265

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.

CaptSaltyJack
sumber
4
Itu Sintaksnya. :help editmenunjukkan e[dit]! [++opt] [+cmd]. Dan :help ++emengatakan argumen [++ opt] dapat digunakan untuk memaksa nilai 'fileformat' [..] .
dennis
19
hanya untuk memperjelas, :set listmenunjukkan baris baru ( $), :e ++ff=unixmenunjukkan CR ( ^M); jika Anda ingin melihat keduanya, :set listmaka:e ++ff=unix
Yibo Yang
5
Untuk memperluas komentar @ dennis, beri :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.
sundar - Reinstate Monica
2
Baik masih tidak bekerja untuk saya vimuntuk beberapa alasan ... Maksud saya tidak ada -bpilihan, atau :e ++ff=unixketika di dalam :(
RAM237
3
Baiklah,: e ++ ff = unix berhasil. Sekarang bagaimana cara mematikannya?
Croo
78

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.

Larry K
sumber
Saya biasanya tidak perlu melihat garis berakhir, karena saya kebanyakan bekerja di 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?
alpha_989
31

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.

Paweł Smolak
sumber
11

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.

Brian S. Wilson
sumber
Sayangnya di sistem saya (Ubuntu 16.04) 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?
alpha_989
:e ++ff=unixtidak menunjukkan dengan ^Mbenar dan tidak menunjukkannya ketika saya menggunakan unixjenis file .. Jadi saya kira masalahnya terpecahkan untuk saat ini ...
alpha_989
6

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¶
Arno
sumber
2

dengan menggunakan catdan -AAnda dapat melihat baris baru sebagai $, tab sebagai^I
cat -A myfile

mirhossein
sumber
0

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

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

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.

danilo
sumber