2011-09-30 172 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