#vim #colors #line #text-cursor
#vim #Цвет #строка #текстовый курсор
Вопрос:
Существует хороший фрагмент для изменения цвета курсора:
if amp;term =~ "xterm\|rxvt"
" use an orange cursor in insert mode
let amp;t_SI = "<Esc>]12;orangex7"
" use a red cursor otherwise
let amp;t_EI = "<Esc>]12;redx7"
silent !echo -ne "33]12;red07"
" reset cursor when vim exits
autocmd VimLeave * silent !echo -ne "33]11207"
" use 03]12;gray07 for gnome-terminal
endif
Как я должен изменить это, чтобы вместо курсора курсорная линия меняла цвет, например, с темно-синего на синий?
Моя полная конфигурация https://bitbucket.org/JackLeo/home-configs/src/5b8faf340f87/.vimrc
Комментарии:
1. Мне нравится сопоставление ключей arror с комментарием «Используйте чертовы ключи hjkl».
2. Должен ли я буквально писать здесь <ESC> или это визуализация ^V’ESC’? Когда я копирую и вставляю приведенный выше текст в свой .vimrc, он ничего не делает (и да, он утверждает, что является xterm… это сеанс putty в окне Linux)
Ответ №1:
Посмотрите на команду «выделить», которая является более простым способом управления этим.
Например, чтобы изменить курсорную линию,
: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. Я знаю это, я использую это в файле конфигурации. Дело в том, что я хочу, чтобы он менялся в зависимости от того, нахожусь ли я в режиме вставки.
2. обновлен ответ для решения проблемы «переключение цвета зависит от режима».
3. Это был такой удобный совет!! Спасибо!!
4. Чтобы уточнить, для gVim и Neovim с
set termguicolors
помощью, вам нужно будет использоватьguifg
иguibg
. Для Vim в терминале и Neovim без истинных цветов следует использоватьctermbg
иctermfg
.5. Мне не нравятся цвета фона, поэтому я изменил его на «autocmd InsertEnter * set cursorline» / «autocmd insertlave * set nocursorline». Теперь я получаю подчеркивание только как индикатор для вставки или обычного режима.
Ответ №2:
Это довольно просто, поместите следующее в свой .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).
Комментарии:
1. другие полезные примеры
cterm=bold
, и вы можете «отменить» что-либоNONE
, например, у меня нет подсветки, когда я не в режиме вставки, сctermfg=NONE ctermbg=NONE cterm=NONE
Ответ №3:
При использовании MacVim с «Lokaltog / vim-powerline» вы можете настроить свои обычные / визуальные / цвета вставки в соответствии с цветом режима 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.
Нормальный
Визуальный
Вставить
Я также считаю полезным настроить ОС для визуального выбора с использованием того же цвета. Например, я изменил цвет Orange
выделения на OSX, и когда я выделяю текст, он теперь оранжевый, а не синий, как в VIM.
Пример
Здесь оранжевая подсветка используется в текстовом поле, когда я пишу эту запись переполнения стека. Теперь весь текст, который я выбираю в своей ОС, соответствует настройке VIM.
Комментарии:
1. Есть идеи, какие «соляризованные» цвета для курсорной линии.
2. Во фрагменте кода vimscript ошибка. Редактирование необходимо для удаления ненужных ;
Ответ №4:
Я решил переключиться CursorLine
и Normal
в режим вставки. Сначала получите значения с :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
Для соляризованного света это выглядит следующим образом. Мне нравится эффект «фокусировки».
Комментарии:
1. Спасибо! Я думаю, что это простой красивый вид, который каждый хочет видеть при переходе на эту страницу, потому что он не разрушает подсветку синтаксиса. Жаль, что это работает только для светового режима и терминала. Не могли бы вы расширить свой ответ, чтобы включить gvim и темные фоновые изображения?
Ответ №5:
ЦВЕТ в текущей строке ОТСУТСТВУЕТ, даже если вы входите в РЕЖИМ ВСТАВКИ или выходите из него
"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