Cursor do terminal branco e pesquisas amarelas do Vim

1

Eu tenho um cursor de bloco piscando no XTerm. O objetivo é sempre poder dizer minha posição atual. Geralmente funciona bem, mas falha quando coloco meu cursor em um plano de fundo semelhante à cor do cursor - um excelente exemplo do que quero dizer são buscas no Vim: elas têm fundo amarelo, meu cursor é branco (devido a .foreground em .Xesources ), e por isso mal posso dizer qual dos resultados destacados é o atual.

Eu gostaria de ter meu cursor invertendo a cor do caractere atual, para que eu ainda possa ter resultados de pesquisa amarelos (mas o caractere apontado pelo cursor terá um fundo escuro e texto claro quando o cursor piscar). A solução deve funcionar, pelo menos, para este cenário específico.

Não tenho certeza se isso é algo que deve ser feito no Vim ou na configuração do XTerm. Tentei procurar por isso na Web e nas páginas de manual, mas não consegui encontrar nada relevante.

Note que eu não uso o gvim, eu uso o console Vim. Muitos recursos mencionam guibg=reverse para o Vim, mas isso não funcionará aqui.

    
por rr- 09.05.2015 / 13:04

2 respostas

0

Eu posso pensar em várias maneiras, além de mudar as cores, para tornar o cursor mais fácil de encontrar. Pode-se ativar e desativar o cursorcolumn ou o cursorline ou defini-los permanentemente. Com os meus esquemas de cores favoritos, isso pode não ser uma boa dica ou pode ser muito feio para suportar.

Outra solução é alternar o destaque da pesquisa com :se nohls e com :sehls . Essas são configurações persistentes e pode-se esquecer de retornar à pesquisa realçada.

Para desativar o destaque da pesquisa atual, mapeei 'Ctrl + l' (que é um ell, não um) com a seguinte configuração no meu .vimrc. O realce retornará com a próxima pesquisa. 'Ctrl + l' é conveniente para esse remapeamento porque seu mapeamento padrão é para o comando :redraw para atualizar a tela.

nnoremap <silent> <C-l> :<C-u>nohlsearch<CR><C-l>

Eu também tenho um mapeamento usando 'F3' para alternar o realce de pesquisa persistente:

nnoremap <F3> :set hlsearch! hlsearch?<CR>
    
por 15.05.2015 / 11:45
0

Se você não especificar a cor do cursor, xterm desenhará o cursor usando o reverso das cores de primeiro plano / plano de fundo na célula onde o cursor está. Isso é para o xterm. Outros programas não se comportam dessa maneira.

Isso é o que o manual xterm diz:

cursorColor (class CursorColor)
Specifies the color to use for the text cursor. The default is "XtDefaultForeground". By default, xterm attempts to keep this color from being the same as the background color, since it draws the cursor by filling the background of a text cell. The same restriction applies to control sequences which may change this color.

Setting this resource overrides most of xterm's adjustments to cursor color. It will still use reverse-video to disallow some cases, such as a black cursor on a black background.

Ao mesmo tempo, se você selecionar texto, por exemplo, usando o mouse, o xterm tentará fazer com que o cursor e a seleção pareçam diferentes. Existem configurações de recursos relacionadas a isso, dependendo de suas preferências: highlightReverse , highlightSelection e highlightTextColor .

O esquema do Xterm para reverter as cores de primeiro plano / segundo plano pressupõe que o cursor esteja em uma célula que já esteja legível. Se o texto for amarelo e o fundo branco, o cursor não será mais legível do que o texto.

O Xterm também possui uma seqüência de escape que pode ser usada para definir a cor do cursor, mas o vim não fornece uma maneira de usar isso para sobrescrever a cor do cursor (na verdade, isso provavelmente seria complicado).

Como o esquema padrão do xterm para colorir o cursor não diminui a legibilidade, a maneira de corrigir isso no vim é escolher um tema de cor que seja legível (sem amarelo sobre branco).

    
por 14.06.2016 / 14:15