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)

Elton Carvalho
fonte

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 .

garyjohn
fonte
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.

Sardathrion - contra o abuso de SE
fonte
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.

isound
fonte
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