Jak mogę zmienić linię podświetlenia Vima, aby nie była podkreśleniem?

91

W niektórych schematach kolorów bieżąca linia podświetlenia zmienia tło, w innych, na przykład Desert, bieżąca linia jest podkreślona.

Chcę zmienić bieżące podświetlenie linii w Desert, aby zamiast podkreślenia użyć innego koloru tła. Jak mogę to zrobić?

Mój .vimrc:

set cursorline
highlight Cursorline cterm=bold

Aktualizacja: .vimrcto rozwiązuje problem

colorscheme desert
set cursorline
hi CursorLine term=bold cterm=bold guibg=Grey40
jak on
źródło
7
Prawdopodobnie z powodu niefortunnego sformułowania pytania. Pozwoliłem sobie przeredagować to, aby wyjaśnić stwierdzenie, a także zneutralizować głosowanie przeciw.
ib.

Odpowiedzi:

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

desertto twój schemat kolorów. (powinien być pierwszy)
umieść go w swoim~/.vimrc

kev
źródło
4
Jeśli ładujesz schemat kolorów po tych liniach w vimrc, to nowy schemat kolorów może wyczyścić pewne rzeczy. Przetestuj na linii poleceń Vima przed próbą umieszczenia vimrc.
Herbert Sitz
Wiem, jak to naprawić. W Twoim kodzie powinniśmy zmienić podkreślenie na pogrubione!
Ashim
3
@Idigas colorto skrót odcolorscheme
kev
1
Działa to dobrze w gvim lub vim-gtk. Ale w terminalowym vimie usuwa tylko podkreślenie z bieżącej linii. Nie podświetla aktualnej linii (przynajmniej nie dla mnie!).
Omid Kamangar,
66

U mnie to działa lepiej (w każdym terminalu).

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

Jest to ustawienie koloru dla terminala: kolor tła - ctermbg i kolor tekstu - ctermfg . Do użycia w oknie graficznym dodaj parametryguibg=darkred guifg=white

Możesz również podświetlić odpowiednią kolumnę, używając polecenia:

:set cursorcolumn

Przydatne jest włączanie i wyłączanie podświetlania, naciskając jeden klawisz w edytorze. Dodaj tę linię do swojego vimrc :

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

wpisanie `` H '' spowoduje włączenie i wyłączenie podświetlenia (zamapuj go na inny klawisz, jeśli chcesz)

Więcej informacji znajdziesz w artykule: http://vim.wikia.com/wiki/Highlight_current_line

srnka
źródło
9
I cterm=NONEjest to ustawienie, które ostatecznie usuwa podkreślenie linii kursora (w moim przypadku).
tbloncar
1
Hjest domyślnie używany do przejścia na początek bufora.
quapka
20

dla stylu podobnego do tego, który otrzymujesz w gvim w terminalu, zachowując podświetlanie składni:

" 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
źródło
Możesz także ustawić zmienną środowiskową export TERM=xterm-256colorna 256 kolorów. Pełna tabela kolorów jest tutaj: upload.wikimedia.org/wikipedia/en/1/15/Xterm_256color_chart.svg
apurkrt
1
Nawiasem mówiąc, set cursorlinebrakuje w Twoim fragmencie .vimrc.
Zrozumienie tego zajęło
14

Jeśli chcesz włączyć podkreślenie, użyj jednej z następujących opcji:

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

W przeciwnym razie użyj jednego z tych:

:hi CursorLine cterm=none
:hi CursorLine gui=none
user5920118
źródło
8

Miałem podobny problem z ustawieniem podświetlenia linii kursora, ale mój był spowodowany poleceniem mksession, którego użyłem do zapisania informacji o sesji podczas wyjścia z vima. Ta sesja jest następnie automatycznie przywracana podczas uruchamiania programu, jeśli jest uruchomiona bez żadnych argumentów plikowych.

Jeśli ktoś ma taką konfigurację .vimrc, możesz dodać do .vimrc następujące polecenie, aby poprawnie ustawić podświetlenie linii kursora: -

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

Trochę wyjaśnienia, dlaczego to działa. Wraz z różnymi informacjami o buforze i oknie, mksession zapisuje bieżącą nazwę schematu kolorów. Jest to przywracane podczas uruchamiania programu poprzez przywracanie sesji. Jednakże, ponieważ przywracanie sesji jest zwykle wykonywane po uruchomieniu .vimrc (zazwyczaj przy użyciu funkcji wywołanej przez 'autocmd VimEnter *'), ustawienie podświetlenia linii kursora w .vimrc jest resetowane domyślnie dla przywróconego schematu kolorów.

Powyższa funkcja, wywołana przez autocmd, zostanie uruchomiona po zakończeniu całej inicjalizacji i dlatego pomyślnie ustawia podświetlenie linii kursora.

HTH.

Hari Mahadevan
źródło
0

Musisz dodać .vimrclinię końcową:

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
csx
źródło