插入模式下Vim CursorLine颜色更改

时间:2011-09-30 18:29:26

标签: colors cursor line vim

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

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

5 个答案:

答案 0 :(得分:30)

您是否参与了'突出'命令,这是一种更容易控制的方法。

例如,要更改CursorLine,

:hi CursorLine guifg=red guibg=blue

参考::帮助突出显示

使其在模式之间切换。

" 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,突出显示更容易长期维护(如果偶尔使用gVim的情况下)

答案 1 :(得分: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

有关详细信息,请参阅:

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

答案 2 :(得分:3)

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

以下是我使用的代码,基于@ Zarick-Lau的回答。

在我的CREATE VIEW vw_tbl AS SELECT col = LEFT(col, 50) FROM tbl 文件中:

colors/molokai.vim

以下是使用molokai原始配色方案的示例。

<强>正常

normal mode (green

<强>视觉

visual mode (orange)

插入

insert mode (blue)

我也发现将OS设置为使用相同颜色进行视觉选择也很有帮助。例如,我在OSX中将高亮颜色更改为" 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; ,当我选择文本时,它现在是橙色而不是蓝色,与VIM相同。

select orange highlight

示例

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

selecting text in the OS

答案 3 :(得分:0)

我选择在插入模式下切换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

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

normal mode insert mode

答案 4 :(得分:0)

即使您输入或退出 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