?

Log in

Previous Entry | Next Entry

Работа с цветом в vim

Работа с цветом в vim

Казалось бы текстовый редактор не предназначен для работы с цветовыми палитрами, обычно для этого используют специальные программы, одной из неплохих программ подобного рода, например, является GPick.
Специализированные программы для редактирования html в лучшем случае предлагают простой диалог для выбора цвета из списка или цветового круга. Но vim и здесь демонстрирует выдающиеся качества - расширяемость, универсальность и способность работать без мыши, с одной клавиатурой. Плагинов, работающих так или иначе с цветом для vim существует несколько, но мне показались удобными всего два. О них и пойдёт речь далее. Все плагины, о которых далее идёт речь, работают только с графической версией редактора, что и понятно. Консольная версия редактора цвета в формате rgb отображать не может.

Отображение цветов внутри буфера-HexHighlight

HexHighlight - очень простой плагин, который просто заменяет коды цветов цветными прямоугольниками.
По умолчанию плагин использует комбинацию клавиш в качестве триггера - вкл/выкл.
Если посмотреть текст плагина, то в первых строках мы увидим строчку:
map :call HexHighlight()


Теперь, при необходимости можно переопределить эту комбинацию на любую удобную, либо прямо в тексте плагина, либо в .vimrc.

Примечание. Под клавишей по умолчанию 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 можно легко увидеть, какие пары цветов выглядят приемлемо, затем, для цвета текста нужно отрегулировать яркость и насыщенность -так чтобы был достигнут необходимый контраст.
Если для текста нужно подобрать более одного цвета, то проще всего это сделать изменяя только тон, и без необходимости не изменяя насыщенность и контраст. В этом случае палитра будет более однородной, и, соответственно, заверстанный в такой палитре текст будет смотреться лучше - так как контраст будет почти одинаковым. Правда в слове "почти" кроется следующий смысл: если вы используете для текста соседние по тону цвета, то их контраст будет также похожим, а если нет - то небольшая корректировка контраста всё же потребуется.

Ссылки


  1. Редактор палитр gpick - http://www.gpick.org/

  2. hexHighlight.vim - http://www.vim.org/scripts/script.php?script_id=2937

  3. colorsel.vim  - http://www.vim.org/scripts/script.php?script_id=927

Tags: