Tornando a janela ativa no vim mais óbvia

22

Meu espaço de trabalho é normalmente um xterm muito grande com o vim, dividido em seis ou mais buffers. Seria realmente útil se fosse mais óbvio qual era o buffer ativo. No momento, estou usando a presença de números de linha para isso:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set number
    autocmd WinLeave * set nonumber
augroup END

mas isso significa que, quando altero os buffers, meu código salta para a esquerda ou para a direita, o que é irritante. Além disso, gostaria de ver qual é a linha 94, mesmo em um buffer inativo . Existe alguma maneira de alterar as cores dos números de linha no buffer ativo?

DrHyde
fonte

Respostas:

26

Seguindo o modelo, você pode variar propriedades diferentes, como colorcolumn:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set colorcolumn=80
    autocmd WinLeave * set colorcolumn=0
augroup END

Isso colorirá a coluna 80 na sua janela atual, enquanto a desativará nas outras. É um pouco menos dissonante do que definir / desmarcar números de linha.

Uma opção ainda menos intrusiva, se você está acostumado a destacar a linha atual (definir cul), é:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set cul
    autocmd WinLeave * set nocul
augroup END

Tudo se resume ao seu uso e ao que você está disposto a suportar.

fgb
fonte
11

A cor da linha de status é a maneira mais comum de saber qual janela está ativa. É definido no esquema de cores com estas duas linhas:

hi StatusLine   ctermfg=15  guifg=#ffffff ctermbg=239 guibg=#4e4e4e cterm=bold gui=bold
hi StatusLineNC ctermfg=249 guifg=#b2b2b2 ctermbg=237 guibg=#3a3a3a cterm=none gui=none

O primeiro é para a janela atual, o segundo é para a janela "não atual".

Este é um trecho de xoria256 , você deve adaptar as cores ao seu esquema de cores.

Mas você pode tentar algo assim (cuidado, as cores na segunda linha são completamente aleatórias):

augroup NrHighlight
  autocmd!
  autocmd WinEnter * hi LineNr ctermfg=247 guifg=#9e9e9e ctermbg=233 guibg=#121212
  autocmd WinLeave * hi LineNr ctermfg=274 guifg=#e9e9e9 ctermbg=133 guibg=#212121
augroup END
romainl
fonte
Eu já tentei alterar o destaque do LineNr no WinEnter / WinLeave, mas parece que a coloração do LineNr é global.
DrHyde 3/02
Sim, e tive que esperar seu comentário para lembrar disso. Portanto, não, se o LineNr for global, obviamente não há como alterá-lo em uma janela específica. Você não acha que a linha de status é suficiente?
romainl
Gostaria de saber se pode haver alguma outra versão por janela do LineNr. E não, não acho que a linha de status seja suficiente. Ajuda, mas eu gostaria de mais. Um problema ao usar a linha de status é que ter o indicador de janela ativo na parte inferior da janela é exatamente o oposto do que temos em qualquer outro lugar - uma barra de título na parte superior de uma janela que muda de cor - para que haja um momento faça uma pausa para pensar "oh sim, o vim faz isso de outra maneira". Enquanto os números das linhas estão sempre , em todas as aplicações, no mesmo local.
DrHyde
Eu realmente gostaria que você pudesse mudar a cor do plano de fundo da janela, mas parece que, pelo exposto, isso não é possível.
Jonathan Hartley
Usando hi StatusLine...e hi StatusLineNC...funciona como um encanto!
Luc M
2

Isto é o que eu faço:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set relativenumber
    autocmd WinLeave * set norelativenumber
augroup END

Os números relativos são apenas uma ajuda para calcular a quantidade repetida de comandos; não há utilidade para eles em uma janela que você não está editando.

saga
fonte
1

Você pode adicionar isso ao seu ~/.vimrc, o que fará com que as barras de status das janelas inativas tenham um fundo cinza escuro para diferenciar da barra de status branca da janela ativa.

highlight StatusLineNC cterm=bold ctermfg=white ctermbg=darkgray

Veja este exemplo de captura de tela. A janela do meio está ativa (barra de status branca). As janelas esquerda e direita estão inativas (barra de status cinza escuro).

insira a descrição da imagem aqui

wisbucky
fonte