Por que o Vim define a largura máxima do texto para 79 em vez de 80?


13

Estou um pouco intrigado com alguns valores padrão no Vim. Em particular, pois gq{motion}, diz-se que

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

Eu pensei que deveria ter feito mais sentido se tivesse definido a largura máxima como 80, em vez disso.

Alguém pode me esclarecer sobre isso? Acho que estou perdendo alguma coisa.


1
Bem, 80é um "padrão" bastante arbitrário para começar, então ... por que não 79? Agora, a quebra automática de linhas 79em um 80terminal de colunas dá um pouco mais de espaço à direita e pode melhorar a legibilidade. github.com/vim/vim/blob/…
romainl

2
Talvez, no 80terminal de toda a coluna, a última coluna tenha sido reservada para o símbolo de quebra automática? Ainda assim, se você tiver números de linha, eles definitivamente terão mais do que apenas uma coluna. Então, eu ainda estou confuso. Além disso, a partir do código que você vinculou, 79o valor máximo pode ser usado? Talvez eu não tenha entendido o que li.
Atcold 8/08/16

3
... ou você pode simplesmente definir textwidthe terminar.
VanLaser 8/08/16

13
80 é o número de colunas dos terminais de hardware antigos e, posteriormente, das telas do MS DOS (modo de texto). tw=79em vez de tw=80exibir uma linha com 80 caracteres em um terminal de 80 colunas imprime uma nova linha extra.
Sato Katsura

7
Uma nova linha é sempre adicionada. Se for o 81º caractere em um terminal de 80 caracteres, você terá uma linha completa seguida por uma vazia.
Sato Katsura

Respostas:


7

Não tenho nenhuma evidência de que foi por isso que 79 foi originalmente escolhido, mas um bom motivo para deixá- lo nesse valor é porque, se você usar 'list'com um valor incluído eolem 'listchars', a exibição do listchar causará um caractere de 80 caracteres. linha de comprimento para envolver a próxima linha em um terminal de 80 caracteres.

Se a linha tiver apenas 79 caracteres, a coluna 80 estará livre para o final da linha listchar.


Eu não entendi. Onde devo usar 'list'? O que isso deve fazer?
Atcold

@Atcold É uma opção que faz com que caracteres geralmente invisíveis (como o final da linha) sejam exibidos na tela. Veja :help 'list'ou tente executar :set listpara vê-lo em ação.
Rich

:set listnão faz muito. Aposto que não tenho eolo listchars. Não tenho muita certeza de que essa seja a razão por trás dos 79personagens. Eu acredito que @ sato-katsura tem a melhor resposta no comentário.
Atcold

eolestá 'listchars'ativado por padrão, mas é claro que é possível que algo em sua configuração tenha removido. Em minha resposta, afirmo especificamente que não tenho motivos para acreditar que esse foi o motivo histórico pelo qual o 79 foi originalmente escolhido. Estou apenas dando outra razão pela qual continua sendo um bom valor para usar agora.
Rich

@Atcold. A nova linha não é exibida por padrão, não faz sentido reservar um caractere extra para isso.
Christian Brabandt 11/11/19

6

É importante perceber que este "padrão" só se aplica aos gqe gwcomandos e auto-formato como descrito nessa seção. O padrão textwidthé 0. Além disso, :righte o :centerpadrão é 80, não 79.

Quanto ao motivo pelo qual 79 foi escolhido, não pode ser uma retenção direta do vi gq, pois gw, e o formato automático não existe no vi. Isso é principalmente especulação, mas acredito que o padrão 79 para o formato automático foi escolhido por consistência com o empacotamento automático existente do vi. Que isso se aplica gqe gwé um efeito colateral; pode-se esperar que 80 teriam sido escolhidos de outra forma.

No vi (e no vim se textwidth=0), o texto inicia o agrupamento automático na largura da janela menos wrapmargin. No entanto, se wrapmargin=0nenhum empacotamento automático ocorrerá. Isso significa que se você estava usando um ADM-3A com um limite de 80 caracteres wrapmargin=1, a largura máxima com quebra automática é 79. Uma vantagem desse comportamento é que há um lugar para o cursor viver enquanto aguarda para ver o que o próximo personagem será antes de decidir onde embrulhar. Obviamente, vi e vim podem colocar o cursor na próxima linha (como observado ao digitar uma palavra muito longa), mas deixar uma coluna extra é um pouco melhor.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.