Как мне изменить выделенную строку Vim, чтобы она не была подчеркиванием?


91

В некоторых цветовых схемах текущее выделение строки меняет фон, в других, например, в Desert, текущая строка подчеркивается.

Я хочу изменить выделение текущей строки в Desert, чтобы использовать другой цвет фона вместо подчеркивания. Как я могу это сделать?

Мой .vimrc:

set cursorline
highlight Cursorline cterm=bold

Обновление: .vimrcэто решает проблему

colorscheme desert
set cursorline
hi CursorLine term=bold cterm=bold guibg=Grey40

7
Видимо из-за неудачной формулировки вопроса. Я взял на себя смелость переписать его, чтобы прояснить заявление, а также нейтрализовал голос против.
ib.

Ответы:


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

desertваша цветовая схема. (должна быть первой)
поместите ее в свой~/.vimrc


4
Если вы загружаете цветовую схему после этих строк в vimrc, то новая цветовая схема может прояснить ситуацию. Проверьте в командной строке Vim, прежде чем пытаться вставить vimrc.
Herbert Sitz

Я знаю, как это исправить. В вашем коде мы должны изменить подчеркивание на полужирный!
ашим

3
@Idigas color- это сокращение отcolorscheme
kev

1
Это хорошо работает в gvim или vim-gtk. Но в терминале vim он удаляет только подчеркивание с текущей строки. Он не выделяет текущую строку (по крайней мере, для меня!).
Омид Камангар

66

Для меня это работает лучше (в любом терминале).

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

Это установка цвета для терминала: цвет фона - ctermbg , а цвет текста - ctermfg . Для использования в графическом окне добавьте параметрыguibg=darkred guifg=white

Вы также можете выделить соответствующий столбец, используя команду:

:set cursorcolumn

Полезно включать и выключать выделение, нажимая одну клавишу в редакторе. Добавьте эту строку в свой vimrc :

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

ввод 'H' будет включать и выключать выделение (сопоставьте его с другой клавишей, если хотите)

Вы можете найти больше информации в статье: http://vim.wikia.com/wiki/Highlight_current_line


9
И cterm=NONEэто параметр, который в конечном итоге удаляет подчеркивание строки курсора (в моем случае).
tbloncar

1
Hпо умолчанию используется для перемещения в верхнюю часть буфера.
quapka

20

для стиля, аналогичного тому, который вы получаете в gvim в терминале, с сохранением подсветки синтаксиса:

" 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

Вы также можете установить переменную среды export TERM=xterm-256colorна 256 цветов, чтобы она работала. Полная таблица цветов находится здесь: upload.wikimedia.org/wikipedia/en/1/15/Xterm_256color_chart.svg
apurkrt

1
Кстати set cursorline, отсутствует в вашем отрывке из .vimrc. У меня
ушло

14

Если вы хотите убрать подчеркивание, используйте один из следующих вариантов:

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

В противном случае используйте один из них:

:hi CursorLine cterm=none
:hi CursorLine gui=none

8

У меня была аналогичная проблема с настройкой выделения строки курсора, но моя была связана с командой mksession, которую я использовал для сохранения информации о сеансе во время выхода из vim. Затем этот сеанс автоматически восстанавливается при запуске программы, если он запускается без каких-либо аргументов файла.

Если у кого-то есть такая настройка .vimrc, вы можете добавить следующее в .vimrc, чтобы правильно установить выделение строки курсора: -

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

Небольшое объяснение того, почему это работает. Наряду с различной информацией о буферах и окнах mksession сохраняет текущее имя цветовой схемы. Это восстанавливается во время запуска программы путем восстановления сеанса. Однако, поскольку восстановление сеанса обычно выполняется после запуска .vimrc (обычно с использованием функции, вызываемой через 'autocmd VimEnter *'), настройка выделения строки курсора в .vimrc сбрасывается по умолчанию для восстановленной цветовой схемы.

Вышеупомянутая функция, вызываемая через autocmd, будет запущена после завершения инициализации и, следовательно, успешно устанавливает выделение строки курсора.

HTH.


0

Вы должны добавить .vimrcконечную строку:

highlight lineNr term=bold cterm=NONE ctermbg=none  ctermfg=none gui=bold

set cursorline

highlight CursorLine term=bold cterm=NONE ctermbg=none  ctermfg=none gui=bold

highlight CursorLineNr term=bold cterm=none ctermbg=none ctermfg=yellow gui=bold
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.