26

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

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

我应该如何改变这一点,而不是光标,CursorLine 会改变颜色,例如从深蓝色变为蓝色?

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

4

5 回答 5

35

您是否查看了“突出显示”命令,这是一种更简单的控制方法。

例如,要更改 CursorLine,

:hi CursorLine guifg=red guibg=blue

参考: :help 高亮

使其在模式之间切换。

" 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

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

于 2011-10-01T08:43:10.847 回答
8

这非常简单,将以下内容放入您的.vimrc或自定义颜色方案文件中。

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

有关更多信息,请参阅:

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

于 2011-10-01T09:56:33.867 回答
4

将 MacVim 与'Lokaltog/vim-powerline'一起使用时,您可以设置正常/视觉/插入颜色以匹配电力线模式颜色。我发现这对于在不阅读电力线的情况下了解我处于什么模式非常有帮助,尤其是在大屏幕上。

这是我正在使用的代码,基于@Zarick-Lau 的回答。

在我的colors/molokai.vim文件中:

" Visual Mode Orange Background, Black Text
hi Visual          guifg=#000000 guibg=#FD971F

" Default Colors for CursorLine
highlight CursorLine guibg=#3E3D32
highlight Cursor guibg=#A6E22E;

" Change Color when entering Insert Mode
autocmd InsertEnter * highlight  CursorLine guibg=#323D3E
autocmd InsertEnter * highlight  Cursor guibg=#00AAFF;

" Revert Color to default when leaving Insert Mode
autocmd InsertLeave * highlight  CursorLine guibg=#3E3D32
autocmd InsertLeave * highlight  Cursor guibg=#A6E22E;

这是一个使用 molokai 原始配色方案的示例。

普通的

正常模式(绿色

视觉的

视觉模式(橙色)

插入

插入模式(蓝色)

我还发现将操作系统设置为使用相同的颜色进行视觉选择也很有帮助。例如,我Orange在 OSX 中将突出显示颜色更改为,当我选择文本时,它现在是橙色而不是蓝色,与 VIM 中相同。

选择橙色突出显示

例子

在我编写此 Stack Overflow 条目时,文本框中使用了橙色突出显示。现在我在操作系统中选择的所有文本都与 VIM 设置匹配。

在操作系统中选择文本

于 2016-02-03T07:24:03.967 回答
1

我选择切换CursorLineNormal处于插入模式。首先用:hi Normal和获取值:hi CursorLine。然后调整以下几行:

set cursorline
autocmd InsertEnter * highlight Normal ctermbg=7
autocmd InsertEnter * highlight CursorLine ctermbg=15
autocmd InsertLeave * highlight Normal ctermbg=15
autocmd InsertLeave * highlight CursorLine ctermbg=7

对于日光照射,这看起来像这样。我喜欢“焦点”效果。

正常模式插入模式

于 2020-09-21T10:45:02.027 回答
1

即使您进入或离开INSERT MODE ,当前行中也没有颜色


"set cursorline
set noshowmode

"Enable CursorLine
set nocursorline

"Default Colors for CursorLine
hi CursorLine cterm=NONE ctermbg=NONE ctermfg=NONE

"Change Color when entering Insert Mode
autocmd InsertEnter * set nocursorline

"Revert Color to default when leaving Insert Mode
autocmd InsertLeave * set nocursorline

于 2020-11-27T20:07:25.100 回答