Info dasar
Vim tidak menampilkan baris baru terbaru dalam buffer tetapi sebenarnya vim selalu menempatkan EOL di akhir file ketika Anda menulisnya, karena standar untuk file teks dalam sistem Unix. Anda dapat menemukan informasi lebih lanjut tentang ini di sini . Singkatnya Anda tidak perlu khawatir tentang tidak adanya baris baru di akhir file di vim.
Eksperimen 1
Anda dapat melakukan percobaan kecil ini untuk memeriksa perilaku ini. Di terminal jalankan:
$ vim test_test
Masukkan karakter 1
dan simpan file :wq.
Anda hanya memiliki satu karakter dalam file, bukan? Sebenarnya tidak :) Anda sekarang memiliki file 1
dan LF
karakter Anda. Mari kita periksa, dengan utilitas hexdump:
$ hexdump test_test
0000000 31 0a
0000002
31
adalah kode ASCII untuk karakter 1
, dan 0a
kode ASCII untuk LF
karakter non-cetak yang untuk UNIX karena Anda mungkin sudah tahu kode untuk end of line.
Eksperimen 2
Tetapi bagaimana jika kita akan membuka file yang tidak memiliki eol
simbol di akhir file. Mari kita periksa juga. Mari kita buat file tanpa eol di akhir, misalnya seperti ini:
$ echo -n "1" > test_without_eol
Kemudian lagi mari kita lihat di dalamnya dengan hexdump:
$ hexdump test_without_eol
000000 31
0000001
Jadi tidak ada eol
karakter di sini. Mari kita buka file ini dalam vim:
$ vim test_without_eol
Di bagian bawah editor Anda akan melihat:
"test_without_eol" [noeol] 1L, 1C
Dan jika Anda akan menyimpan eol
karakter file ini akan dimasukkan secara otomatis.
Apa yang bisa kita lakukan tentang ini?
Jika Anda benar-benar perlu melihat ujung file. Coba gunakan perintah ini:
:set listchars=eol:$
itu akan menampilkan semua eol
karakter sebagai $
tanda.
:set listchars=eol:$
Vim hanya menghilangkan EOL jika file dibuka sebagai
'binary'
dan yang'endofline'
pilihan adalah reset (ketika file biner tidak memiliki EOL saat pembukaan, atau Anda secara eksplisit mengatur ulang pilihan). Dengan kata lain, Vim hanya menghormati EOL yang hilang untuk file biner. Untuk file teks, selalu menulis dengan (ditambahkan) EOL. (Itu sebabnya Anda membutuhkan solusi seperti plugin PreserveNoEOL saya untuk menyimpan file teks tanpa EOL.) Anda dapat menemukan semua detail di:help 'endofline'
.Jadi, Anda hanya perlu memastikan untuk membuka file sebagai non-biner agar Vim secara otomatis menulis EOL.
sumber
Seperti yang disebutkan Alexander , Vim tidak menunjukkan EOL di EOF, itu sebabnya ini sangat membingungkan (terutama dengan baris baru kosong / kosong yang merupakan hal lain), oleh karena itu ia benar-benar menulis setiap saat di file save.
Berikut ini adalah tes sederhana cara menguji apakah itu bekerja:
Perhatikan bagaimana shell prompt berperilaku ketika tidak ada EOL (itu tercampur dengan baris berikutnya). Saat menyimpan ulang file dengan Vim, ia menambahkannya.
Dengan menggunakan
wc
kita dapat menghitung garis, kata dan karakter sebelum menyimpan dan setelah, sehingga kita dapat melihat bahwa itu benar-benar berubah.Mengapa ini sangat penting? Untuk menjaga agar file kami tetap mematuhi POSIX .
sumber