Что-то, что приходит на ум, - это создать цветовую схему, которая напрямую указывает на низкоуровневые синтаксические группы в файлах синтаксиса 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', содержащихся в исходных цветовых схемах, потребуется значительная работа, поскольку обычно существует много низкоуровневых групп подсветки синтаксиса.
Несколько лучший подход может заключаться в связывании языка-специфичные группы низкого уровня для групп высокого уровня, которые также специфичны для каждого языка.Это поможет сохранить файл пользовательской цветовой схемы достаточно маленьким, но потребует дополнительной инвентаризации.