Como definir a largura da janela do gvim para 80 colunas de texto, além das necessárias para mostrar o número da linha


9

Eu uso o gvim com

set number

no meu .vimrcmodo ele mostra o número da roupa, mais um espaço, antes de cada linha.

Se o documento tiver menos de 10 linhas, serão necessárias 2 colunas, se tiver mais de 10, 3 colunas e assim por diante.

Se eu colocar

set lines=40 columns=80

em .gvimrc, mostrará 78 colunas de código e 2 para o número da roupa mais o ritmo, ou 77 + 3 e assim por diante.

Gostaria que a largura da janela fosse definida como 80 colunas + qualquer número de colunas necessário para mostrar o número da roupa.

Não precisa ser dinâmico, mas eu gostaria de poder ler o número de linhas de um determinado arquivo e definir de columnsacordo. (Obviamente, uma solução dinâmica seria realmente legal, mas não essencial)

Respostas:


9

Tente isso em seu ~ / .vimrc:

au BufRead * let &numberwidth = float2nr(log10(line("$"))) + 2
          \| let &columns = &numberwidth + 80

Sempre que você carregar um buffer (isto é, abrir um arquivo), que determinará o número de colunas necessárias para mostrar o maior número de linha, defina a opção 'numberwidth' de acordo e defina 'columns' para esse número mais 80 para o seu texto .


Obrigado! Funciona muito bem ao abrir um arquivo. Alguma idéia de como fazer isso acontecer ao trocar de guia também? Desde já, obrigado.
— Elton Carvalho

11
Os eventos de comando automático do Vim estão listados em :help autocommand-events. Entre eles está TabEnter, por isso, você pode tentar substituir BufReadpor BufRead,TabEnterno exemplo acima e ver se isso lhe dá o comportamento desejado. Eu não testei o exemplo com esse evento.
— #

Obrigado @garyjohn, o TabEnter funcionou conforme o esperado. Talvez mais tarde eu jogue com esses eventos de comando automático. Eles são realmente úteis!
— Elton Carvalho

11
@david_nash: 'numberwidth'cresce apenas logaritmicamente com o número de linhas no arquivo; portanto, se você puder permitir que o espaço horizontal seja 'number'ativado, não acho que você se preocupe em limitá-lo.
— garyjohn

11
@ JonathanHartley: Seria fácil controlar isso com um operador ternário ( :help expr1) ou com um if / endif (por exemplo, :help options-in-terminal). O problema está mudando & colunas quando 'number'é alterado. Pensei em usar o evento de comando automático OptionSet, mas :help OptionSetdiz que é uma má idéia redefinir uma opção durante o processamento desse evento.
— garyjohn

2

eu uso

set lines=24 columns=84

no meu $ HOME / .gvimrc, o que me dá o que você deseja. Raramente (se alguma vez) tenho arquivos com mais de 999 linhas, portanto, funciona para mim.


Era o que eu estava fazendo, mas manter exatamente 80 colunas de texto é bom porque posso impedir que termine com 81 caracteres em uma linha, o que não é grande coisa, mas é bom evitar.
— Elton Carvalho

2

Defino a largura do número como, digamos, 5 e depois as colunas para 85 (80 + 5). Isso deve ser bom para arquivos de 0 a um milhão de linhas.

Aqui está o que você pode colocar no arquivo ~ / .vimrc (padrão)

set numberwidth=5  "Good for files upto a million lines
set columns=85
set nu

Você verá que o número da linha está formatado com '% 5d' (5 é a largura do número acima) em vez do formato padrão '% d', desperdiçando um pouco de espaço antes dos números da linha, mas mantendo a consistência.


Bem-vindo ao superusuário. Esteja ciente de que você postou uma resposta para uma pergunta muito antiga. Embora não haja nada de errado em fazer isso, lembre-se de que você pode não receber uma resposta.
— precisa
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.