2011-09-30 167 views
22

有很好的片断改变光标颜色:在插入模式下的Vim CursorLine颜色变化

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

我喜欢与评论的arror键映射“使用该死的hjkl键”。 – Grammin

+0

我是否在这里写下\ 或者是^ V'ESC'的可视化?当我复制粘贴上面的文本到我的.vimrc它什么都没做(是的,它声称是一个xterm ...它是一个Linux框上的腻子会话) –

回答

27

你有没有看在为这是控制这个更简单的方法“亮点”命令。

例如,改变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颜色,但IMO,亮点是更容易长期保持(并在情况下,如果使用gVim的偶尔)

+0

我知道,我在配置中使用它文件。重点是我希望它会根据我是否处于插入模式而改变。 – JackLeo

+0

更新了回复以解决'开关颜色取决于模式'的问题。 –

+0

这是一个方便的提示!谢谢!! –

6

这是非常简单的,把在您的.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中起作用)。

+1

其他有用的例子'cterm = bold',你可以用'NONE'''取消任何东西,例如。没有在插入模式下突出显示,使用'ctermfg = NONE ctermbg = NONE cterm = NONE' – artfulrobot

2

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

这是我使用的代码,基于@ 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; 

下面是使用莫洛凯原来的颜色方案的例子。

普通

normal mode (green

视觉

visual mode (orange)

插入

insert mode (blue)

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

select orange highlight

在这里,在文本框中使用的橙色高亮我在写这个堆栈溢出条目。现在我在我的操作系统中选择的所有文本都与VIM设置相匹配。

selecting text in the OS