Mengapa Vim menetapkan lebar teks maks ke 79 bukan 80?

13

Saya agak bingung tentang beberapa nilai default di Vim. Secara khusus, untuk gq{motion}, dikatakan bahwa

[...]
If the 'textwidth' option is 0, the formatted line
length is the screen width (with a maximum width of
79).

Saya berpikir bahwa itu seharusnya lebih masuk akal jika itu akan mengatur lebar maks 80, sebagai gantinya.

Bisakah seseorang memberi tahu saya tentang ini? Saya kira saya kehilangan sesuatu.

Atcold
sumber
1
Nah, 80apakah "standar" yang cukup arbitrer untuk memulai jadi ... mengapa tidak 79? Sekarang, membungkus garis di 79dalam 80terminal lebar kolom memberikan sedikit lebih banyak ruang ke kanan dan dapat meningkatkan keterbacaan. github.com/vim/vim/blob/…
romainl
2
Mungkin, di 80terminal kolom lebar kolom terakhir dicadangkan untuk simbol pembungkus? Namun, jika Anda memiliki nomor baris, maka mereka pasti akan mengambil lebih dari satu kolom. Jadi, saya masih bingung. Selain itu, dari kode yang Anda tautkan, apakah 79nilai maksimumnya dapat digunakan? Mungkin saya tidak mengerti apa yang saya baca.
Atcold
3
... atau Anda dapat mengatur textwidthdan dilakukan dengan.
VanLaser
13
80 adalah jumlah kolom dari terminal perangkat keras lama, dan kemudian layar MS DOS (mode teks). tw=79alih-alih tw=80karena menampilkan garis sepanjang 80 karakter pada terminal 80 kolom, mencetak baris baru tambahan.
Sato Katsura
7
Baris baru selalu ditambahkan. Jika kebetulan karakter ke-81 pada terminal lebar 80 karakter, Anda hanya mendapatkan baris penuh diikuti oleh yang kosong.
Sato Katsura

Jawaban:

7

Saya tidak punya bukti bahwa inilah mengapa 79 awalnya dipilih, tetapi satu alasan bagus untuk membiarkannya pada nilai itu adalah karena jika Anda menggunakan 'list'dengan nilai yang disertakan untuk eoldalam 'listchars'maka tampilan listchar akan menyebabkan 80 karakter- garis panjang untuk membungkus ke baris berikutnya dalam terminal lebar 80 karakter.

Jika panjang baris hanya 79 karakter, maka kolom ke-80 bebas untuk listcharduduk di baris terakhir .

Kaya
sumber
Saya tidak mengerti. Di mana saya harus menggunakan 'list'? Apa yang seharusnya dilakukan?
Atcold
@Atcold Ini adalah opsi yang menyebabkan karakter yang biasanya tidak terlihat (seperti ujung baris) ditampilkan di layar. Lihat :help 'list'atau coba lari :set listuntuk melihatnya dalam aksi.
Kaya
:set listtidak berbuat banyak. Saya yakin saya tidak memiliki eoldi listchars. Saya tidak begitu yakin ini adalah alasan di balik 79karakter. Saya percaya @ sato-katsura memiliki jawaban terbaik dalam komentar.
Atcold
eolsecara 'listchars'default, tetapi tentu saja ada kemungkinan sesuatu di konfigurasi Anda telah menghapusnya. Saya secara khusus menyatakan dalam jawaban saya bahwa saya tidak punya alasan untuk percaya bahwa ini adalah alasan historis yang awalnya dipilih. Saya hanya memberikan alasan lain mengapa ini terus menjadi nilai yang baik untuk digunakan, sekarang.
Kaya
@Atcold. Baris baru tidak ditampilkan secara default, tidak masuk akal untuk memesan karakter tambahan untuk itu.
Christian Brabandt
6

Penting untuk menyadari bahwa "default" ini hanya berlaku untuk gqdan gwperintah dan format otomatis seperti yang dijelaskan di bagian itu. Standarnya textwidthadalah 0. Selanjutnya, :rightdan :centerdefault ke 80, bukan 79.

Adapun mengapa 79 dipilih, itu tidak bisa menjadi terus-lebih langsung dari vi sejak gq, gwdan auto-format yang tidak ada di vi. Ini sebagian besar spekulasi, tapi saya percaya 79 default untuk format otomatis dipilih untuk konsistensi dengan pembungkus otomatis yang ada vi. Bahwa ini berlaku untuk gqdan gwmerupakan efek samping; orang mungkin berharap 80 akan dipilih sebaliknya.

In vi (dan in vim if textwidth=0) teks mulai membungkus otomatis di minus lebar jendela wrapmargin. Namun, jika wrapmargin=0, tidak ada pembungkus otomatis akan terjadi. Ini berarti bahwa jika Anda menggunakan ADM-3A dengan batas 80 karakter, dengan wrapmargin=1, lebar maksimum dengan pembungkus otomatis adalah 79. Sisi positif dari perilaku ini adalah ada tempat bagi kursor untuk hidup sambil menunggu untuk melihat apa karakter selanjutnya adalah sebelum memutuskan di mana untuk membungkus. Tentu saja, vi dan vim dapat menempatkan kursor pada baris berikutnya (seperti yang diamati ketika mengetik kata yang sangat panjang) tetapi meninggalkan kolom tambahan sedikit lebih baik.

Massa
sumber