Применение разных цветовых схем к разным окнам - PullRequest
3 голосов
/ 28 декабря 2010

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

function SetColorScheme ()
  if &filetype != "vo_base"
    colorscheme desertEx 
  endif
endfunction 
au WinEnter * call SetColorScheme()

Это прекрасно работает с одной проблемой.

Если я открою файл .otl, скажем todo.otl (vo_base), а затем открою другой файл, скажем example.xml, используя: sp.имея example.xml).

Если я использую BufEnter вместо WinEnter, тогда к обеим окнам будет применено desertEx.

Есть ли способ убедиться, что при открытии окна с помощью: sp запускается вышеуказанная функция (a) и (b) только для этого конкретного окна, а не для всех окон в текущем сеансе.

Ответы [ 2 ]

4 голосов
/ 28 декабря 2010

Нет, нет способа сделать это.В vim может быть только одна активная схема цветов одновременно.

1 голос
/ 21 июля 2012

Что-то, что приходит на ум, - это создать цветовую схему, которая напрямую указывает на низкоуровневые синтаксические группы в файлах синтаксиса Vim.

Возьмем, например, c.vim для языка программирования C.Например, вы найдете группы подсветки синтаксиса, такие как: cStatement, cLabel, cConditional, cType .. и т. Д.

Возьмите python.vim, и вы найдете pythonDefStatement, pythonFunction, pythonConditional и т. Д.

Итак, если вы хотите использовать разные цветовые схемы для кода C и Python, вы должны скопировать две исходные цветовые схемы в ~ / .vim / colors / mycolorscheme.vim и отредактировать их, чтобы они указывали на группы синтаксиса низкого уровня вместообщие группы высокого уровня, такие как Комментарий, Константа, Ошибка, Идентификатор и т. д., которые можно найти во многих доступных цветовых схемах.

Обратите внимание, что вы, вероятно, захотите оставить раздел по умолчанию для операторов 'highlight' поверх этих двух других, чтобы позаботиться о подсветке синтаксиса для файлов, которые не содержат ни C, ни кода Python.

Чтобы уточнить, вы можете отредактировать знаменитый код «Hello World» и ввести в командной строке Vim следующее:

:hi cInclude ctermfg=cyan guifg=cyan

Вы не изменили цветовые схемы, другие файлы отображаются в другихокна или вкладки не затрагиваются, и все же «#include» теперь отображается другим цветом.

Если вам не нужна эта функция, я бы посоветовал против нее, потому что она в значительной степени нарушает подсветку синтаксиса Vim.Кроме того, для преобразования существующих операторов ': hi', содержащихся в исходных цветовых схемах, потребуется значительная работа, поскольку обычно существует много низкоуровневых групп подсветки синтаксиса.

Несколько лучший подход может заключаться в связывании языка-специфичные группы низкого уровня для групп высокого уровня, которые также специфичны для каждого языка.Это поможет сохранить файл пользовательской цветовой схемы достаточно маленьким, но потребует дополнительной инвентаризации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...