¿Por qué Vim establece el ancho máximo de texto en 79 en lugar de 80?

13

Estoy un poco perplejo acerca de algunos valores predeterminados en Vim. En particular, para gq{motion}, se dice que

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

Pensé que debería haber tenido más sentido si hubiera establecido el ancho máximo en su 80lugar.

¿Puede alguien aclararme sobre esto? Supongo que me estoy perdiendo algo.

Atcold
fuente
1
Bueno, 80para empezar es un "estándar" bastante arbitrario, así que ... ¿por qué no 79? Ahora, las líneas de ajuste 79en un 80terminal de ancho de columnas dan un poco más de espacio a la derecha y pueden mejorar la legibilidad. github.com/vim/vim/blob/…
romainl
2
¿Quizás, en el 80terminal de columnas, la última columna estaba reservada para el símbolo de ajuste? Aún así, si tiene números de línea, entonces definitivamente tomarán más de una columna. Entonces, todavía estoy perplejo. Además, desde el código que vinculó, ¿es 79el valor máximo que se puede usar? Quizás no entendí lo que leí.
Atcold
3
... o simplemente puedes configurar textwidthy terminar.
VanLaser
13
80 es el número de columnas de terminales de hardware antiguos y más tarde de pantallas MS DOS (modo de texto). tw=79en lugar de tw=80porque mostrar una línea de 80 caracteres de longitud en un terminal de 80 columnas imprime una nueva línea adicional.
Sato Katsura el
77
Siempre se agrega una nueva línea. Si resulta ser el 81º personaje en un terminal de 80 caracteres de ancho, solo obtienes una línea completa seguida de una vacía.
Sato Katsura el

Respuestas:

7

No tengo ninguna evidencia de que esta sea la razón por la que se eligió originalmente 79, pero una buena razón para dejarlo en ese valor es porque si se usa 'list'con un valor incluido eolen, 'listchars'entonces la visualización del listchar causará un carácter de 80 caracteres. longitud de línea para ajustarse a la siguiente línea en una terminal de 80 caracteres de ancho.

Si la línea tiene solo 79 caracteres, la columna 80 está libre para que el final de la línea se listcharasiente.

Rico
fuente
No lo entendí. ¿Dónde se supone que debo usar 'list'? ¿Qué se supone que haga?
Atcold
@Atcold Es una opción que hace que los caracteres que generalmente son invisibles (como el final de la línea) se muestren en la pantalla. Mira :help 'list'o simplemente intenta correr :set listpara verlo en acción.
Rico
:set listno hace mucho Apuesto a que no tengo el eolen el listchars. No estoy muy seguro de que esta sea la razón detrás de los 79personajes. Creo que @ sato-katsura tiene la mejor respuesta en el comentario.
Atcold
eolestá 'listchars'activado por defecto, pero por supuesto es posible que algo en su configuración lo haya eliminado. En mi respuesta, declaro específicamente que no tengo ninguna razón para creer que esta fue la razón histórica por la que se eligió originalmente 79. Solo estoy dando otra razón por la que sigue siendo un buen valor para usar, ahora.
Rico
@Atcold. Nueva línea no se muestra de forma predeterminada, no tiene sentido reservar un carácter adicional para eso.
Christian Brabandt el
6

Es importante darse cuenta de que este "defecto" sólo se aplica a las gqy gwlos comandos y de auto-formato como se describe en esa sección. El valor predeterminado textwidthes 0. Además, :righty :centerpredeterminado es 80, no 79.

En cuanto a por qué se eligió el 79, no puede ser un resabio directo desde vi ya gq, gwy de auto-formato no existen en vi. Esto es principalmente especulación, pero creo que el 79 predeterminado para el formateo automático se eligió por coherencia con el autoenvoltura existente de vi. Que esto se aplica gqy gwes un efecto secundario; uno podría esperar que 80 hubieran sido elegidos de otra manera.

En vi (y en vim if textwidth=0) el texto comienza a ajustarse automáticamente en el ancho de la ventana menos wrapmargin. Sin embargo, si wrapmargin=0no se realizará el autoenvolvimiento. Esto significa que si estaba usando un ADM-3A con un límite de 80 caracteres wrapmargin=1, el ancho máximo con autoenvoltura es 79. Una ventaja de este comportamiento es que hay un lugar para que el cursor viva mientras espera ver qué el siguiente personaje será antes de decidir dónde envolver. Por supuesto, vi y vim podrían colocar el cursor en la siguiente línea (como se observa al escribir una palabra muy larga), pero dejar una columna adicional es un poco mejor.

Masa
fuente