Работа с цветом в vim
Казалось бы текстовый редактор не предназначен для работы с цветовыми палитрами, обычно для этого используют специальные программы, одной из неплохих программ подобного рода, например, является GPick.
Специализированные программы для редактирования html в лучшем случае предлагают простой диалог для выбора цвета из списка или цветового круга. Но vim и здесь демонстрирует выдающиеся качества — расширяемость, универсальность и способность работать без мыши, с одной клавиатурой.
Плагинов, работающих так или иначе с цветом для vim существует несколько, но мне показались удобными всего два. О них и пойдёт речь далее. Все плагины, о которых далее идёт речь, работают только с графической версией редактора, что и понятно. Консольная версия редактора цвета в формате rgb отображать не может.
Отображение цветов внутри буфера-HexHighlight
HexHighlight — очень простой плагин, который просто заменяет коды цветов цветными прямоугольниками.
По умолчанию плагин использует комбинацию клавиш в качестве триггера — вкл/выкл.
Если посмотреть текст плагина, то в первых строках мы увидим строчку: map
Теперь, при необходимости можно переопределить эту комбинацию на любую удобную, либо прямо в тексте плагина, либо в .vimrc.
Примечание. Под клавишей leader по умолчанию vim понимает клавишу <\> (backslash). Она часто используется разными плагинами, если конечно вы её не переопределили в .vimrc с помощью строки
let mapleader =¨символ¨.
Редактирование палитры
Для редактирования набора цветов можно найти несколько плагинов для vim. Есть несколько плагинов, которые вызывают стандартный диалог выбора цвета библиотеки gtk, и вставляют код выбранного цвета в текущий буфер. Это полезный функционал, но он не делает главного — возможности увидеть как выбранные цвета будут сочетаться друг с другом.
Вот как раз эту задачу и решает плагин colorsel.vim. Как написано в документации это простой интерактивный RGB/HSV color selector. Авторы — David Necas (Yeti) и Ingo Karkat.
Для запуска плагина достаточно набрать команду : ColorSel, в качестве параметров можно указать пару цветов для фона/текста, причём их можно задать как в виде кодов, так и в виде имен например так:
: ColorSel black teal
после чего откроется окно с редактором палитры. редактор палитры позволяет редактировать пару цветов фон/text в формате rgb\hsv и сохранять их в палитру. В нижней части окна показываются все клавиатурные комбинации, которые могут быть использованы для работы с плагином, поэтому освоить работу с плагином совсем нетрудно.
ColorSel хранит текущую палитру в именованных регистрах vim «a-«l, получается, что по умолчанию она содержит 12 цветов, чтобы убедиться в этом достаточно просмотреть содержимое регистров vim с помощью команды : registers
И поэтому, если вы поместите в регистр код цвета, неважно даже из какого буфера, то при переходе в окно плагина он попадёт в палитру, и наоборот если вы вставите содержимое регистра в буфер, то очевидно, в положении курсора вставится код цвета.
Несколько замечаний о подборе цветов.
Видимо наиболее удобный способ подбора цветов заключается в использовании формата hsv. Для начала нужно выбрать тон для фона, его яркость и насыщенность, после чего выбрать тон текста, с помощью плагина ColorSel можно легко увидеть, какие пары цветов выглядят приемлемо, затем, для цвета текста нужно отрегулировать яркость и насыщенность -так чтобы был достигнут необходимый контраст.
Если для текста нужно подобрать более одного цвета, то проще всего это сделать изменяя только тон, и без необходимости не изменяя насыщенность и контраст. В этом случае палитра будет более однородной, и, соответственно, заверстанный в такой палитре текст будет смотреться лучше — так как контраст будет почти одинаковым. Правда в слове «почти» кроется следующий смысл: если вы используете для текста соседние по тону цвета, то их контраст будет также похожим, а если нет — то небольшая корректировка контраста всё же потребуется.
Ссылки
- Редактор палитр gpick — http://www.gpick.org/
- hexHighlight.vim — http://www.vim.org/scripts/script.php? script_id=2937
- colorsel.vim — http://www.vim.org/scripts/script.php? script_id=927