РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ VIM - Брам Мооленаар

Использование подсветки синтаксиса

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

06.1    Как включить?
06.2    Неправильные или отсутствующие цвета
06.3    Различные цвета
06.4    С цветом или без цвета
06.5    Цветная печать
06.6    Дальнейшее чтение по теме

Следующая глава: Редактирование нескольких файлов
Предыдущая глава: Настройки
Содержание: Руководство пользователя Vim


06.1 Как включить?

Всё волшебство начинается с одной простой команды:

:syntax enable

В большинстве ситуаций этого должно быть достаточно для того, чтобы в вашем файле появилась цветовая подсветка синтаксиса. Vim автоматически определит тип файла и загрузит соответствующие правила подсветки. Комментарии станут синими, ключевые слова -- коричневыми, а строки красными. Просматривать файл становится легко и приятно. Спустя некоторое время вы начнете понимать, как сложно разбираться в простом черно-белом тексте!

Если вы всегда хотите использовать подсветку синтаксиса, то поместите команду ":syntax enable" в файл |vimrc|.

Если вы хотите, чтобы подсветка синтаксиса работала только с терминалами, которые поддерживают цвет, то вы можете поместить в файл |vimrc| следующий код:

if &t_Co > 1
  syntax enable
endif

Если же вы хотите, чтобы подсветка синтаксиса работала только в версии с графическим интерфейсом, то поместите команду "syntax enable" в файл |gvimrc|.


06.2 Неправильные или отсутствующие цвета

Возможно несколько причин, по которым вы можете не увидеть цвета на экране:

  • Ваш терминал не поддерживает цвета.

Vim будет использовать жирный, наклонный и подчёркнутый текст, но это будет выглядеть не самым лучшим образом. Возможно, вам стоит попытаться установить терминал с поддержкой цветов. Для Unix я рекомендую xterm из XFree86: |xfree-xterm|.

  • Ваш терминал способен отображать цвет, но Vim об этом не знает.

Убедитесь, что настройка переменной $TERM является правильной. Например, для использования цветного xterm:

setenv TERM xterm-color

или (в зависимости от используемой оболочки):

TERM=xterm-color; export TERM

Имя терминала должно соответствовать используемому вами терминалу. Если при этом отображение цветов всё равно не работает, прочитаете |xterm-color|, где объясняется несколько способов заставить Vim показывать цвета (не только для xterm).

  • Тип файла не распознаётся.

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

:set filetype

Если результатом окажется "filetype=", то проблема действительно в том, что Vim не знает, к какому типу относится файл. Вы можете установить тип файла вручную:

:set filetype=fortran        

Чтобы посмотреть, какие типы файлов доступны, загляните в каталог $VIMRUNTIME/syntax. Если вы используете графический интерфейс, то можно воспользоваться меню "Синтаксис". Установить тип файла также можно при помощи |режимной_строки|, чтобы файл правильно определялся всякий раз, когда вы его редактируете. Например, в Makefile можно использовать такую строчку (её следует поместить около начала или конца файла)

# vim: syntax=make

Часто для определения типа файла используется расширение. См. также |новый_тип_файла|, где рассказывается о том, как подсказать Vim какой тип файла использовать.

  • Для этого типа файла отсутствуют правила подсветки синтаксиса.

Вы можете попытаться использовать похожий тип файла, установив его вручную, как показано выше. Если этого недостаточно, то можно написать собственные правила подсветки для файлов такого типа, см. |свой_файл_синтаксиса|.

Цвета также могут отображаться неправильно:

  • Цветной текст слишком трудно читать.

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

:set background=dark

Для светлого фона:

:set background=light

Убедитесь, что вы поместили эту команду _до_ команды ":syntax enable", иначе цвета будут уже установлены. После установки 'background' можно использовать команду ":syntax reset", чтобы Vim восстановил цвета по умолчанию.

  • Цвета нарушаются при прокрутке снизу вверх.

Vim не читает весь файл целиком, когда разбирается в тексте. Вместо этого, он разбирает только тот фрагмент, который вы видите. Это позволяет работать намного быстрее, но при этом цвета могут нарушаться. Простой способ поправить положение - обновить экран по CTRL-L, или прокрутить экран немного назад и снова вперёд.  Для настоящего решения проблемы обратитесь к |:syn-sync|. Некоторые правила синтаксиса позволяют заглядывать назад в тексте, смотрите файл справки для соответствующего файла с правилами подсветки. Например, для синтаксиса TeX см. |tex.vim|.


06.3 Различные цвета

Если вас не устраивают цвета по умолчанию, то вы можете выбрать другую цветовую схему. В графическом интерфейсе для этого имеется меню Редактировать/Цветовая схема. Кроме того, можно ввести команду:

:colorscheme evening

"evening" (вечер) это имя цветовой схемы. Вместе с Vim поставляется несколько цветовых схем, которые можно попробовать. Загляните в каталог $VIMRUNTIME/colors.

Если вам понравится какая-нибудь схема, то не забудьте добавить соответствующую команду ":colorscheme" в файл |vimrc|.

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

1. Выберите подходящую цветовую схему, которая напоминает то, что вам нужно. Скопируйте её в ваш собственный каталог Vim. Например, на Unix:

!mkdir ~/.vim/colors
!cp $VIMRUNTIME/colors/morning.vim ~/.vim/colors/mine.vim

   Это нужно делать из Vim, поскольку только Vim знает значение $VIMRUNTIME.

2. Отредактируйте файл цветовой схемы. Вот полезные переменные:

term возможные свойства ч/б терминала
cterm возможные свойства цветного терминала
ctermfg цвет текста в цветном терминале
ctermbg цвет фона в цветном терминале
gui возможные свойства для графического интерфейса          
guifg цвет текста в графическом интерфейсе
guibg цвет фона в графическом интерфейсе

   Например, следующая строка в файле цветовой схемы делает комментарии зелёными:

:highlight Comment ctermfg=green guifg=green

   Свойства, которые можно указывать для "cterm" и "gui" это "bold" и "underline" (жирный и подчеркнутый текст). Если вы хотите использовать оба значения, то пишите "bold,underline". Подробнее см. команду |:highlight|.

3. Скажите Vim всегда использовать вашу цветовую схему. Для этого поместите в |vimrc| строку >

colorscheme mine

Если вы хотите посмотреть, как выглядят часто употребляемые цветовые комбинации, то используйте команды

:edit $VIMRUNTIME/syntax/colortest.vim
:source %

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


06.4 С цветом или без цвета

Выделение цветом может требовать значительное количество ресурсов. Если вам покажется, что редактор работает слишком медленно, то можно на время отключить подсветку:

:syntax clear

При редактировании следующего файла подсветка будет восстановлена.

Если вы хотите полностью выключить подсветку синтаксиса, то используйте команду

:syntax off

Это позволит полностью избавиться от подсветки синтаксиса и немедленно убрать её из всех буферов.

Если вы желаете, чтобы подсветка синтаксиса работала только для определённых файлов, то используйте ручную подсветку:

:syntax manual

Эта команда разрешает подсветку синтаксиса, но не включает её немедленно при редактировании буфера. Вместо этого от вас потребуется дополнительно включить опцию 'syntax' для каждого буфера, где вы хотели бы видеть подсветку синтаксиса:

:set syntax=ON

06.5 Цветная печать

В версии для MS-Windows текущий файл можно распечатать при помощи команды

:hardcopy

Вы увидите привычный системный диалог печати, где сможете выбрать принтер и сделать необходимые настройки. Если у вас цветной принтер, то вывод на бумаге должен выглядеть примерно так же, как и то, что вы видите в самом Vim. Однако, если вы используете тёмный фон, то цвета будут скорректированы, чтобы быть удобочитаемыми на белой бумаге.

На процесс печати из Vim влияет несколько опций:

  •     'printdevice'
  •     'printheader'
  •     'printfont'
  •     'printoptions'

Чтобы напечатать только определённый диапазон строк, выделите требуемые строки в Визуальном режиме и наберите команду :hardcopy. Например:

v100j:hardcopy

"v" переводит редактор в Визуальный режим, "100j" выделяет 100 строк вниз от текущего положения курсора, ":hardcopy" отправляет выделенные строки на печать. Конечно, для перемещения в Визуальном режиме можно использовать и другие команды.

Если у вас есть PostScript принтер, то это так же будет работать и в Unix. В противном случае вам потребуется проделать немного дополнительной работы - преобразовать ваш текст в HTML и напечатать его из веб-браузера, например из Netscape.

Перевести текущий файл в HTML можно командой

:source $VIMRUNTIME/syntax/2html.vim

Некоторое время Vim будет занят преобразованиями, а затем вы увидите новое окно с кодом HTML. Сохраните этот документ в файл, например:

:write main.c.html

Теперь откройте этот файл в своём любимом браузере и напечатайте оттуда. Если всё прошло успешно, то бумажная копия должна выглядеть так же, как и в самом редакторе. Подробности см. в |2html.vim|. Не забудьте удалить файл HTML, когда он больше не будет нужен.

Вместо печати файл HTML можно поместить на веб-сервер, чтобы другие могли смотреть на цветной текст.


06.6 Дальнейшее чтение по теме

|usr_44.txt|  Ваши собственные настройки синтаксических правил.
|синтаксис|   Подробности о правилах синтаксиса.


Следующая глава: Редактирование нескольких файлов
Авторские права: см. Авторские права