插入模式下Vim CursorLine颜色更改

Jac*_*Leo 25 vim colors line cursor

有一个改变光标颜色的好片段:

if &term =~ "xterm\\|rxvt"
  " use an orange cursor in insert mode
  let &t_SI = "\<Esc>]12;orange\x7"
  " use a red cursor otherwise
  let &t_EI = "\<Esc>]12;red\x7"
  silent !echo -ne "\033]12;red\007"
  " reset cursor when vim exits
  autocmd VimLeave * silent !echo -ne "\033]112\007"
  " use \003]12;gray\007 for gnome-terminal
endif
Run Code Online (Sandbox Code Playgroud)

我该怎么改变这个而不是光标,CursorLine会改变颜色,例如从深蓝色变为蓝色?

我的完整配置是https://bitbucket.org/JackLeo/home-configs/src/5b8faf340f87/.vimrc

Zar*_*Lau 33

您是否查看了'highlight'命令,这是一种更容易控制它的方法.

例如,要更改CursorLine,

:hi CursorLine guifg=red guibg=blue
Run Code Online (Sandbox Code Playgroud)

参考::帮助突出显示

使其在模式之间切换.

" Enable CursorLine
set cursorline

" Default Colors for CursorLine
highlight  CursorLine ctermbg=Yellow ctermfg=None

" Change Color when entering Insert Mode
autocmd InsertEnter * highlight  CursorLine ctermbg=Green ctermfg=Red

" Revert Color to default when leaving Insert Mode
autocmd InsertLeave * highlight  CursorLine ctermbg=Yellow ctermfg=None
Run Code Online (Sandbox Code Playgroud)

我可以将termcap颜色与autocmd混合,但IMO,突出显示更容易长期维护(如果偶尔使用gVim)


Joh*_*web 7

这非常简单,将以下内容放在您的.vimrc或自定义colorscheme文件中.

set cursorline
autocmd InsertEnter * highlight CursorLine guifg=white guibg=blue ctermfg=white ctermbg=blue
autocmd InsertLeave * highlight CursorLine guifg=white guibg=darkblue ctermfg=white ctermbg=darkblue
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅

注意:您可以使用相同的方法更改光标的颜色,而不使用所有这些 - if语句和转义序列(这也适用于GVim).