Почему моя цветовая схема vim меняется при смене буферов

У меня есть предпочтительная цветовая схема для некоторых типов файлов, но когда я открываю другой файл (другой тип файла с другой цветовой схемой) и возвращаюсь к предыдущему, новая цветовая схема сохраняется.

У меня это есть в моем Gvimrc (с использованием gvim)

autocmd WinEnter,FileType * colorscheme default
autocmd WinEnter,FileType c,cpp colorscheme darkblue
autocmd WinEnter,FileType R,r colorscheme desert

Как я могу изменить, чтобы убедиться, что цветовая схема сохраняется в соответствии с типом файла при перемещении по буферам?

РЕДАКТИРОВАТЬ: добавление следующего не исправило

autocmd BufEnter,BufNew,FileType c,cpp colorscheme darkblue
autocmd BufEnter,BufNew,FileType R,r colorscheme desert

person statquant    schedule 01.03.2013    source источник
comment
Похоже, вам стоит добавить автокоманды BufNew, BufEnter: ›   -  person MPogoda    schedule 01.03.2013


Ответы (2)


Нет смысла объединять события WinEnter и FileType в одном правиле autocmd; первый соответствует имени файла буфера, а последний - типу файла буфера.

Вместо этого используйте один autocmd, запускаемый всякий раз, когда буфер вводится / отображается в окне, и выбирайте цветовую схему с условием для &filetype.

:autocmd BufEnter,FileType *
\   if &ft ==# 'c' || &ft ==# 'cpp' | colorscheme darkblue |
\   elseif &ft ==? 'r' | colorscheme desert |
\   else | colorscheme default |
\   endif
person Ingo Karkat    schedule 01.03.2013
comment
Работает как шарм !!! Благодарю. Просто чтобы понять, почему # и ? для типов файлов? - person statquant; 01.03.2013
comment
Это сравнение с учетом регистра / без учета регистра, позволяющее сэкономить время при вводе текста. Вы также можете выполнять регулярные выражения с =~. - person Ingo Karkat; 01.03.2013
comment
как мне изменить этот код, чтобы использовать darkblue для .sql файлов и desert для .py файлов, а затем pyte для всего остального? ... просто переключите 'c' на 'sql'? (или c / cpp / r в этом ответе являются фактическими расширениями файлов?) - person whytheq; 23.05.2013
comment
@whytheq Это типы файлов, а не расширения. Проверьте, какой у вас буфер, через :setl ft?. - person Ingo Karkat; 23.05.2013
comment
хммм - спасибо - изначально думал, что Ромэнл был вездесущим vim-плакатом, но, возможно, вы берете на себя Инго! p.s. не уверен, что вы много знаете о конфигурации db через vim, но я только что добавил этот вопрос: ВОПРОС - person whytheq; 23.05.2013
comment
@IngoKarkat есть в справке список ft. :h ft не показывает ни одного. Или скажите в своем ответе, что вы используете "cpp" ... как мне узнать, что это за ft? - person whytheq; 23.05.2013

Ответ Инго умнее, но эти автокоманды

autocmd BufEnter *     colorscheme default
autocmd BufEnter *.php colorscheme desert
autocmd BufEnter *.py  colorscheme darkblue

должно сработать. Что ж, здесь они работают.

person romainl    schedule 01.03.2013