Definir números de linha apenas enquanto estiver no modo normal

8

Não tenho muito uso para números de linha enquanto estiver no modo de inserção, então gostaria de desativá-los. No entanto, eles são ótimos para o modo normal.

Usar constantemente set nu!é cansativo. Existe uma maneira de vincular set nu!a saída e a entrada no modo normal?

Alguma solução usando o método acima ou qualquer outro método?

Jason Basanese
fonte
Em relação ao seu comentário à resposta do @ Carpetsmoker, por que você manteria a margem, mas não os números das linhas? Qual era sua intenção original de se livrar dos números?
Rolf
Ele atua como uma maneira de diferenciar entre o modo de inserção e o modo normal. A remoção dos números de linha também serve para remover informações irrelevantes do modo de inserção. Se toda vez que você entra no modo de inserção, você remove a margem, é provável que fique com dor de cabeça em todo o texto, trocando três espaços por vez. Alguns podem preferir isso, no entanto, não é minha preferência.
Jason Basanese

Respostas:

13

Você pode fazer isso com comandos automáticos.

au InsertEnter * set nonumber
au InsertLeave * set number

Não é necessária muita explicação. Isso faz exatamente o que você pediu. Ele vincula "entrar e sair do modo de inserção" a "ativar e desativar os números de linha".

James
fonte
1
Note, no entanto, que InsertLeave não é acionado, quando se utiliza Ctrl-C para sair modo de inserção
Christian Brabandt
5

Aqui está uma solução alternativa que oculta apenas os números, mas não altera a margem esquerda, para que o texto não seja tão grande ao entrar / sair do modo de inserção:

set number

augroup number
    autocmd!
    autocmd InsertEnter * highlight LineNr ctermfg=white guifg=white
    autocmd InsertLeave * highlight LineNr ctermfg=130 guifg=Brown
augroup end

Ao entrar no modo de inserção, isso definirá a cor do texto para a cor de fundo. No meu caso, isso é branco, mas pode ser diferente no seu caso. Quando deixamos o modo de inserção, ele o redefine para o padrão do meu esquema de cores.

Você pode descobrir o padrão para o seu esquema de cores com:

:highlight LineNr
LineNr         xxx term=underline ctermfg=130 guifg=Brown
Martin Tournoij
fonte
3
Ainda melhor:au InsertEnter * hi LineNr ctermbg=NONE ctermfg=bg guifg=bg
Christian Brabandt
Provavelmente é o que vou usar, mas a outra resposta é mais concisa e responde diretamente à pergunta.
Jason Basanese #