Como faço para alterar minha linha de destaque do Vim para não ser um sublinhado?

91

Em alguns esquemas de cores, o realce da linha atual muda de fundo, em outros, como Deserto, a linha atual é sublinhada.

Desejo alterar o realce da linha atual no Deserto para usar uma cor de fundo diferente em vez de sublinhado. Como eu posso fazer isso?

Meu .vimrc:

set cursorline
highlight Cursorline cterm=bold

Atualização: .vimrcisso resolve o problema

colorscheme desert
set cursorline
hi CursorLine term=bold cterm=bold guibg=Grey40
como ele
fonte
6
Provavelmente por causa da formulação infeliz da pergunta. Tomei a liberdade de reescrever para esclarecer a afirmação, e também neutralizei o voto negativo.
ib.

Respostas:

92
color desert
set cursorline
hi CursorLine term=bold cterm=bold guibg=Grey40

deserté o seu esquema de cores. (deve vir primeiro)
coloque-o em seu~/.vimrc

kev
fonte
4
Se você estiver carregando um esquema de cores após essas linhas no vimrc, o novo esquema de cores pode estar limpando as coisas. Teste na linha de comando do Vim antes de tentar inserir o vimrc.
Herbert Sitz
Eu sei como consertar isso. Em seu código, devemos alterar o sublinhado para negrito!
ashim
3
@Idigas coloré uma abreviatura decolorscheme
kev
1
Isso funciona bem no gvim ou vim-gtk. Mas no terminal vim ele apenas remove o sublinhado da linha atual. Não destaca a linha atual (pelo menos não para mim!).
Omid Kamangar
66

Isso funciona melhor (em todos os terminais) para mim.

:hi CursorLine   cterm=NONE ctermbg=darkred ctermfg=white

É a configuração da cor do terminal: cor de fundo - ctermbg e cor de texto - ctermfg . Para usar na janela gráfica, adicione parâmetrosguibg=darkred guifg=white

Você também pode destacar a coluna correspondente, usando o comando:

:set cursorcolumn

É útil ativar e desativar o realce pressionando uma tecla no editor. Adicione estas linhas ao seu vimrc :

:nnoremap H :set cursorline! cursorcolumn!<CR>

digitar 'H' ativará e desativará o realce (mapeie para outra tecla, se desejar)

Você pode encontrar mais informações no artigo: http://vim.wikia.com/wiki/Highlight_current_line

srnka
fonte
9
E cterm=NONEé a configuração que remove o sublinhado da linha do cursor (no meu caso).
tbloncar
1
Hé por padrão usado para mover para o topo do buffer.
quapka de
20

para um estilo semelhante ao que você obtém em gvim no terminal, preservando o destaque de sintaxe:

" first thing is entering vim mode, not plain vi
set nocompatible
" force 256 colors on the terminal
set t_Co=256
" load the color scheme before anything
colorscheme darkblue " or desert... or anything
" the syntax cmd is when the colorscheme gets parsed, i think..
syntax on
" might not be on by default, this enable the cursor line feature
set cursorline

" set the prefered colours, pick one line here only.
" dark grey, better you can get if you don't support 256 colours
hi CursorLine   cterm=NONE ctermbg=8 ctermfg=NONE
" light grey, no 256 colors
hi CursorLine   cterm=NONE ctermbg=7 ctermfg=NONE
" dark redish
hi CursorLine   cterm=NONE ctermbg=52 ctermfg=NONE
" dark bluish
hi CursorLine   cterm=NONE ctermbg=17 ctermfg=NONE
" very light grey
hi CursorLine   cterm=NONE ctermbg=254 ctermfg=NONE
" yelowish
hi CursorLine   cterm=NONE ctermbg=229 ctermfg=NONE
" almost black
hi CursorLine   cterm=NONE ctermbg=234 ctermfg=NONE
gcb
fonte
Você também pode definir a variável de ambiente export TERM=xterm-256colorpara que 256 cores funcionem. A tabela de cores completa está aqui: upload.wikimedia.org/wikipedia/en/1/15/Xterm_256color_chart.svg
apurkrt
1
A propósito, set cursorlineestá faltando no seu trecho .vimrc. Levei 10 minutos para descobrir isso :)
apurkrt
13

Se você quiser ativar o sublinhado, use um dos seguintes:

:hi CursorLine cterm=underline
:hi CursorLine gui=underline

Caso contrário, use um dos seguintes:

:hi CursorLine cterm=none
:hi CursorLine gui=none
user5920118
fonte
8

Tive um problema semelhante ao definir o realce da linha do cursor, mas o meu foi devido ao comando mksession que estava usando para salvar as informações da sessão durante a saída do vim. Essa sessão é restaurada automaticamente durante a inicialização do programa, se for executado sem nenhum argumento de arquivo.

Se alguém tiver .vimrc configurado como este, você pode adicionar o seguinte ao .vimrc para definir o realce da linha do cursor corretamente: -

function s:SetCursorLine()
    set cursorline
    hi cursorline cterm=none ctermbg=darkblue ctermfg=white
endfunction
autocmd VimEnter * call s:SetCursorLine()

Um pouco de explicação de por que isso funciona. Junto com várias informações de buffer e janela, mksession salva o nome do esquema de cores atual. Isso é restaurado durante a inicialização do programa por meio da restauração da sessão. No entanto, como a restauração da sessão normalmente é feita depois que .vimrc foi executado (normalmente usando uma função chamada por meio de 'autocmd VimEnter *'), a configuração de realce da linha do cursor em .vimrc é redefinida pelo padrão para o esquema de cores restaurado.

A função acima, chamada por meio do autocmd, será executada após a conclusão de toda a inicialização e, portanto, define com êxito o realce da linha do cursor.

HTH.

Hari Mahadevan
fonte