Бледные цвета в VIM в Xterm на OpenSuSE с esckeys
Рассмотрим следующую настройку. Редактор Vim (>= 7.3), запускаемый в xterm с темным фоном и настройками Vim background=dark
, syn on
и изначально noesckeys
, Благодаря настройке темного фона и включенной подсветке синтаксиса ключевые слова выделяются яркими и жирными цветами. Теперь, если я выпущу :set esckeys
(либо через.vimrc, либо в интерактивном режиме) и я в OpenSuSE (12.3), все цвета становятся бледными (но что-то отличное от background=light
) либо мгновенно, либо после нескольких нажатий клавиш. Я не могу воспроизвести это поведение в любой системе Debian. Теперь, к сожалению, я хочу установить esckeys, потому что это полезно с latexsuite.
В чем причина этого утомленного поведения или как я могу определить причину?
Есть ли обходной путь, позволяющий одновременно использовать смелые цвета и символы?
1 ответ
Это будет непросто, поэтому давайте вместе разработаем вики-ответ сообщества.
Происхождение исходной цветовой схемы не совсем понятно. Взгляд на :scriptnames
с --noplugins
дает представление о том, откуда это может прийти:
1: /etc/vimrc
2: /usr/share/vim/vim73/syntax/syntax.vim
3: /usr/share/vim/vim73/syntax/synload.vim
4: /usr/share/vim/vim73/syntax/syncolor.vim
5: /usr/share/vim/vim73/filetype.vim
6: ~/.vimrc
7: /usr/share/vim/vim73/syntax/nosyntax.vim
8: /usr/share/vim/vim73/ftplugin.vim
9: /usr/share/vim/vim73/indent.vim
Единственный файл, который содержит определения цвета $VIMRUNTIME/syntax/syncolor.vim
, Он содержит определения, которые имеют term=bold
или же term=underline
а также cterm=NONE
для большинства основных моментов, когда &background == "dark"
, Предполагается, что Vim изначально использует term
атрибутов. Зачем?
С esckeys
настройка Vim повторно инициализирует терминал после нажатия клавиши (например, движения). В частности, он выдает escape-последовательность, которая очищает экран и перерисовывает все. Зачем?
Во время реинициализации, по-видимому, это syntax on
снова, таким образом, косвенно ссылаясь $VIMRUNTIME/syntax/syncolor.vim
снова (strace показывает, что файл снова читается). На данный момент Vim явно использует cterm
атрибуты и очищает все атрибуты смелости, объясняющие наблюдение.
В качестве обходного пути добавление пользовательской схемы цветов с соответствующими атрибутами жирности позволяет избежать вспышки цветов, все еще выполняя повторную инициализацию.