Neden Vim maksimum metin genişliğini 80 yerine 79 olarak ayarlar?


13

Vim'deki bazı varsayılan değerler hakkında biraz şaşkınım. Özellikle aşağıdaki maddeler için gq{motion}, söylenir

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

Bunun 80yerine , maksimum genişliği ayarlasaydı daha anlamlı olması gerektiğini düşündüm .

Birisi beni bu konuda aydınlatabilir mi? Sanırım bir şey eksik.


1
Peki, 80başlamak için oldukça keyfi bir "standart" yani… neden olmasın 79? Şimdi en sarma çizgileri 79bir de 80sütun çapında terminale sağa biraz daha fazla yer verir ve olabilecek okunabilirliği artırmak. github.com/vim/vim/blob/…
romainl

2
Belki, 80sütun genişliğinde terminalde son sütun sarma sembolü için ayrıldı? Yine de, üzerinde satır numaralarınız varsa, kesinlikle sadece bir sütundan daha fazlasını alacaktır. Yani, hala şaşkınım. Ayrıca, bağladığınız koddan 79kullanılabilecek maksimum değer var mı? Belki ne okuduğumu anlamadım.
Atcold

3
... ya da sadece ayarlayıp textwidthbitirebilirsiniz.
VanLaser

13
80, eski donanım terminallerinin ve daha sonra MS DOS (metin modu) ekranlarının sütun sayısıdır. tw=79bunun yerine tw=8080 sütunluk bir terminalde 80 karakter uzunluğunda bir satır görüntülemek ekstra bir satırsonu yazdırır.
Sato Katsura

7
Her zaman bir satırsonu eklenir. 80 karakter genişliğinde bir terminalde 81. karakter olursa, tam bir satır ve ardından boş bir satır alırsınız.
Sato Katsura

Yanıtlar:


7

79 orijinal olarak seçildi bu yüzden ben herhangi bir kanıt yok, ama bir iyi neden terk kullanmak çünkü eğer o değerde öyle 'list'dahil değeriyle eolde 'listchars'sonra listchar ekran 80-karakterli ve neden olacaktır 80 karakter genişliğinde bir terminalde bir sonraki satıra sarmak için uzunluk çizgisi.

Satır yalnızca 79 karakter uzunluğundaysa, satır sonu için 80. sütun ücretsizdir listchar.


Ben anlamadım. Nerede kullanmam gerekiyor 'list'? Ne yapması gerekiyor?
Atcold

@Atcold Genellikle görünmez olan karakterlerin (satır sonu gibi) ekranda görüntülenmesini sağlayan bir seçenektir. Hareket halindeyken görmek için :help 'list'koşmaya bakın veya deneyin :set list.
Zengin

:set listfazla bir şey yapmaz. Ben yok bahse eoliçinde listchars. 79Karakterlerin arkasındaki nedenin bu olduğundan emin değilim . @ Sato-katsura'nın yorumda en iyi cevaba sahip olduğuna inanıyorum.
Atcold

eololduğu 'listchars'varsayılan olarak, ama tabii ki bu sizin config olası bir şey kaldırılmış olma var. Cevabımda özellikle bunun 79'un seçilmesinin tarihsel nedeni olduğuna inanmak için hiçbir neden olmadığını belirtiyorum. Şimdi bunun iyi bir değer olmaya devam etmesinin bir başka nedenini daha veriyorum.
Zengin

@Atcold. Newline varsayılan olarak görüntülenmez, bunun için fazladan bir karakter ayırmak mantıklı değildir.
Christian Brabandt

6

Bu "varsayılan" öğenin yalnızca bu bölümde açıklandığı gibi gqve gwkomutları ve otomatik biçimlendirme için geçerli olduğunu fark etmek önemlidir . Varsayılan textwidthAyrıca 0'dır, :rightve :centervarsayılan 80 değil, 79.

Beri 79 neden seçildiğini gelince, o vi doğrudan bir tutuş-Bitemez gq, gwve otomatik biçim vi yoktur. Bu çoğunlukla spekülasyon, ancak ben vi'nin mevcut otomatik sarma ile tutarlılık için otomatik format için 79 varsayılan seçildiğine inanıyorum. Bunun bir yan etki için geçerli olması gqve gwbir yan etkidir; 80 kişi başka türlü seçilmiş olabilir.

Vi'de (ve vim if durumunda textwidth=0) metin, pencere genişliği eksi otomatik sarma işlemini başlatır wrapmargin. Ancak, wrapmargin=0otomatik sarma gerçekleşmez. Bu, 80 karakter sınırına sahip bir ADM-3A kullanıyorsanız wrapmargin=1, otomatik sarma ile maksimum genişliğin 79 olduğu anlamına gelir. bir sonraki karakter nereye sarılacağına karar vermeden önce olacak. Tabii ki, vi ve vim imleci bir sonraki satıra koyabilir (çok uzun bir kelime yazarken gözlemlendiği gibi), ancak fazladan bir sütun bırakmak biraz daha hoştur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.