Всем привет, на этой неделе я расскажу о возможностях Вим для редактирования работ в системе TeX (или LaTeX, или других надстроек). Речь пойдет о специальных средствах, предусмотренных для теха.
Фолдинг включается через переменную
let g:tex_fold_enabled=1
в .vimrc наряду с
set foldingmethod=syntax
Сворачиваются части, главы, параграфы и подпараграфы и т.д. Можно вставить в конец документа спецкомментарий для Вима:
%vim: ftm=syntax
и Вим включит фолдинг, если выставлена переменная tex_fold_enabled.
Проверка орфографии
Можно отключить проверку орфографии (зачем?) в тех-документах:
let g:tex_nospell=1
А можно отключить только для комментариев, что уже полезно:
let g:tex_comment_nospell=1
Напротив, можно включить ее в зонах verbatim:
let g:tex_verbspell=1
Подсветка синтаксиса
Обычно режимы теха распознаются правильно, но порой бывают сбои (для нестандартных ограничителей). Предусмотрен спецкомментарий %stopzone, насильно прерывающий раскраску математического режима.
Для слабых компьютеров стоит уменьшить числа в
:syn sync maxlines=200
:syn sync minlines=50
Для мощных можно увеличить. Эти переменные ограничивают число строк, которые проверяются при раскраске синтаксиса. Бывает, что в большом файле прыгаешь в середину, а раскраски и нет.
Раскраску можно настраивать с точки зрения затрат мощности на парсинг через переменную g:tex_fast
Это строка содержит нуль и более символов:
- пустая означает минимум раскраски.
- b : жирный и курсив
- c : комментарии
- m : скобки, фигурные и квадратные.
- M : математический режим.
- p : части документа
- r : (nocite, bibliography, label, pageref, eqref)
- s : верхние и нижние индексы
- S : texStyle
- v : verbatim
- V : texNewEnv и texNewCmd
Подсветка синтаксиса распознает ошибки и помечает их красным. Иногда это мешает: например, закрывающий знак доллара мы хотим поставить позже, а все выделено красным. Подавить подсветку синтаксических ошибок позволяет
:let g:tex_no_error=1
Еще об ошибках. Символы @ и _ подсвечиваются как ошибка в .tex-файлах, но это можно отключить:
:let b:tex_stylish = 1
И вообще можно указать, какие символы считать символами ключевых слов, перекрыв представления самого теха на этот предмет: задайте переменную tex_isk. Действует только на .tex-файлы и касается только раскраски.
Если вы ввели новое окружение (а это бывает при использовании стилевых файлов), оно может не распознаться. Тогда его надо добавить:
call TexNewMathZone(sfx,mathzone,starform)
Суффикс sfx надо придумать, это одна буква, A-L и V-Z заняты, так что-то между ними. Второй аргумент - собственно имя окружения, например, gather или как оно называется. Последний аргумент, если истина (единичка), разрешает форму со звездочкой. Пример:
:call TexNewMathZone(M, gather, 1)
Визуальная замена
Довольно удобная побочная возможность раскраски синтаксиса — замена распознанного текста одним символом. Это называется conceal.
Например, если вы работаете в utf8, Вим может заменить команду верхнего индекса с числовым аргументом (^2, скажем) на ². Или \lambda на λ. См. на скриншоте. Причем когда мы встаем курсором на строку, эти подстановки раскрываются, текст-то неизменен, это просто вариант раскраски.
Выставьте
:set concealmode=2
и g:tex_conceal, которая по умолчанию содержит admgs. Варианты:
a — акценты и диакритика, например, Crème Brûlée
b — жирный и курсивный начертания
d — разделители
m — математические значки, например, ∫
g — греческие символы
s — верхние и нижние индексы
Куда-то сюда входит и буква алеф (א), не знаю уж, к греческим ее отнесли или к математическим))
Как видите, все продумано. Привязки, сокращения и меню позволяют настроить под себя всё очень комфортно. Для сборки используйте make, вызов команд прямо из Вим через восклицательный знак:
:!pdflatex dissert.tex
или выход в bash.
И удачи, коллеги!