Весь вечер сегодня и всю ночь разбирался я в LaTeX'е и настраивал под него Vim. Я пользуюсь замечательным плагином Latex-Suite, но в нём столько всего - прям ваще дофига, так что я долго ещё буду в нём копаться..
Мне захотелось написать о паре крутых настроек прямо сейчас (в 5 ночи/утра), потому что потом как известно не найдётся на это времени.
- Про языковые раскладки и математический режим Теха
Я пользуюсь внутренним переключением раскладок в Vim'е:
set keymap=russian-jcuken
set iminsert=0
set imdisable
Поскольку стандартным сочетанием Ctrl-^ пользоваться неудобно, я замапил его на бесполезную кнопку § (на моём маке она рядом с 1, а та, которая там расположена на обычных клавах - с ~ и ` - между Shift и z).
noremap §
lnoremap §
inoremap §
На этой же кнопке есть не менее бесполезный символ ±, на который я повесил следующее сочетание:
inoremap ± $
lnoremap ± $
и поместил его в ftplugin/tex.vim чтобы оно работало только в теховских файлах. Это очень удобно: пишешь основной текст на русском, нажимаешь ± и при этом в техе символом $ открывается математический режим и переключается раскладка на английскую, вводишь формулы, снова нажимаешь заветную клавишу и вуаля - режим формул закрыт, а раскладка снова русская, можно дальше набирать текст. - Про аббревиатуры и макросы
В плагине Latex-Suite есть множество макросов для быстрого набора различных теховских конструкций. Их можно посмотреть вот тут.
Мне очень нравятся макросы, начинающиеся на `. Они короткие и понятные. Например, ` + 'латинская буква' заменяется на "соответствующую" греческую: `a -> \aplha, `t -> \theta и т.д. А сочетание `/ - вставляет команду для дроби: \frac{<++>}{<++>}<++> - при этом в ней есть места для подстановки (<++>) при нажатии Ctrl-j курсор перескакивает к следующему такому месту и там сразу можно писать то, что нужно.
В общем, таких макросов много, они удобны, но разумеется, хочется написать свои, чтобы ускорить набор, например, собственных команд или окружений. поначалу, я пользовался встроенным вимовским iabbrev, но он как-то кривовато работает и довольно неудобен. Так что стоит воспользоваться, опять же, мощью Latex-Suite и в ftplugin/tex.vim прописать конструкцию следующего вида:
call IMAP('>=', ' \geq ', 'tex')
call IMAP('<=', ' \leq ', 'tex')
- в первом аргументе IMAP то, что надо заменять, во втором - на что заменять. Всё очень просто. Так же можно это сделать для окружений. Но для того, чтобы пользоваться спецсимволами типа(перевод строки), нужно их экранировать и брать второй аргумент в двойные кавычки: call IMAP('def ', "\\begin{definition}\<++>\ call IMAP('опр ', "\\begin{definition}\\\end{definition}", 'tex') <++>\ \\end{definition}", 'tex') Построчная синхронизация исходника с результатом
Это, пожалуй, самая крутая функция, которую я сегодня настроил. Для этого я установил pdf-viewer Skim (mac only), и произвёл следующие манипуляции:
1. в настройках Skim на вкладке Синхро сделал следующие настройки:
2. а в ftplugin/tex.vim прописал:
let g:Tex_DefaultTargetFormat='pdf'
let g:Tex_CompileRule_pdf='/usr/texbin/pdflatex -synctex=1 -file-line-error -interaction=nonstopmode $*'
let g:Tex_ViewRule_pdf = 'Skim'
во второй опции главное - это -synctex=1. Об этом я прочитал вот тут, но к сожалению попал я туда не сразу и пришлось долго искать альтернативы типа pdfsync.. А тут перечислены альтернативные вьюеры, если этот почему-то не подходит.
В результате этих несложных манипуляций получилась следующая картина:
когда я редактирую теховский исходник в Vim'е, я нажимаю \ll чтобы скомпилировать его и \ls, чтобы перейти к соответствующему месту в pdf с результатом. Наоборот, когда я просматриваю результат и, положим, нахожу ошибку, я нажимаю Cmd-Shift, щёлкаю мышкой по ошибке и попадаю в Vim'е на соответствующую строчку с кодом!- Spell-check
ну и напоследок, я немного разобрался с проверкой орфографии в Vim'е. не могу сказать, чтобы очень хорошо разобрался и поэтому пользоваться пока не очень удобно, но как и каждый раз, удивлён тем, что в Vim'е таки есть эта функция и она вполне себе нормально работает! вот вкратце, как ей пользоваться:
1. вкл. ':set spell' / выкл. ':set nospell'.
2. установить язык проверки ':set spelllang=ru_yo' (русский язык с буквой ё).
3. перейти к следующей/предыдущей ошибке: ']s' и '[s' соответственно.
4. добавить в словарь: 'zg'.
5. предложить варианты исправления: 'z='.
Хочу отдельно отметить, что когда я набрал ':set spelllang=ru', MacVim сказал мне что для такого языка словаря нет и спросил разрешения скачать. Я был шокирован и разрешил - он просто скачал нужные файлы и всё - в прежние времена он в лучшем случае отправил бы меня самого всё искать и качать, а то бы и просто ругнулся, что не знает такого языка. А теперь-то - всё для людей!
Комментариев нет:
Отправить комментарий