Изменение цвета Vim CursorLine в режиме вставки - PullRequest
25 голосов
/ 30 сентября 2011

Существует хороший фрагмент для изменения цвета курсора:

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

Ответы [ 3 ]

31 голосов
/ 01 октября 2011

Посмотрите ли вы на команду 'highlight', которая является более простым способом управления этим.

Например, чтобы изменить CursorLine,

:hi CursorLine guifg=red guibg=blue

Ссылка:: help highlight

Для переключения между режимами.

" 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)

7 голосов
/ 01 октября 2011

Это довольно просто, добавьте следующее в .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

Для получения дополнительной информации см .:

Примечание: вы можете использовать тот же метод, чтобы изменить цвет курсора без всех этих if -словий и escape-последовательностей (и этотакже будет работать в GVim).

3 голосов
/ 03 февраля 2016

При использовании MacVim с 'Lokaltog / vim-powerline' вы можете настроить обычный / визуальный / вставить цвета в соответствии с цветом в режиме 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.

Нормальный

normal mode (green

Визуальный

visual mode (orange)

Вставка

insert mode (blue)

Я также считаю целесообразным настроить ОС на визуальный выбор с использованием того же цвета.Например, я изменил свой цвет подсветки на Orange в OSX, и когда я выбираю текст, он теперь оранжевый, а не синий, как в VIM.

select orange highlight

Пример

Здесь оранжевое выделение используется в текстовом поле, когда я пишу эту запись переполнения стека.Теперь весь текст, выбранный в моей ОС, соответствует настройке VIM.

selecting text in the OS

...