Существует несколько плагинов Tex для vim ( vim-latex , AutomaticLatexPlugin, скажем, пара).
Каковы различия в предоставляемых функциональных возможностях этих (названных мной и, возможно, других) плагинов TeX?
Вот пара связанных вопросов по SO:
Существует несколько плагинов Tex для vim ( vim-latex , AutomaticLatexPlugin, скажем, пара).
Каковы различия в предоставляемых функциональных возможностях этих (названных мной и, возможно, других) плагинов TeX?
Вот пара связанных вопросов по SO:
Я не буду давать подробное сравнение, поскольку у меня ограниченный опыт работы с различными плагинами. Я хорошо знаю пару плагинов ( LaTeX-Box и LaTeX-Suite ), и я очень хорошо знаю один плагин, так как сам его разрабатываю: vimtex . Таким образом, я буду в основном писать о vimtex. Однако сначала я укажу некоторые ссылки, которые могут представлять интерес для других.
Есть много плагинов для Vim. Вот те, которые я признал как минимум наполовину популярными:
На tex.stackexchange.com есть огромный список редакторов и интегрированных сред LaTeX. В целом он дает хороший обзор, но также предоставляет некоторые обзоры плагинов для Vim:
vimtex основан на LaTeX-Box. Это началось после того, как я в течение некоторого времени вносил исправления ошибок и обновления в LaTeX-Box. Я понял, что плагин может быть написан гораздо более современным способом, если я написал его с нуля. Сначала я лишил большинство функций и построил более надежный и модульный «двигатель». Затем я добавил функции, и я думаю, что сегодня у него есть большинство функций LaTeX-Box, а затем и некоторые.
Вместо того, чтобы давать полный список возможностей (см. Здесь ), я скорее попытаюсь указать на некоторые различия между vimtex и другими плагинами. Тем не менее, я хочу представить несколько смелых заявлений:
Поскольку vimtex основан на LaTeX-Box, он, очевидно, имеет аналогичные принципы. Идея состоит в том, чтобы сделать вещи простыми и решать проблемы, которые еще не решены другими, лучшими плагинами. Он использует latexmk для компиляции документов LaTeX и использует внутренний плагин Vim для подсветки синтаксиса.
В настоящее время в vimtex отсутствует одна важная функция LaTeX-Box: одиночная компиляция с обратным вызовом . Причина, по которой эта функция отсутствует в vimtex, заключается просто в том, что она сложная, и я никогда не находил способ реализовать ее, достаточно простой для моих собственных предпочтений (предложения приветствуются, пожалуйста, не стесняйтесь открывать вопросы или запрашивать запросы) ).
Основное различие между vimtex и LaTeX-Suite, вероятно, заключается в том, что vimtex не пытается реализовать полноценную IDE для LaTeX внутри Vim. Например:
latexmk
для компиляции с функцией обратного вызова , чтобы получить мгновенную обратную связь об ошибках компиляции
vimtex
можно работать бок о бокLatex-Suite
, а это значит, что вы можете получить лучшее из двух плагинов одновременно . :)Я не могу сделать сравнение, так как Vim-LaTeX - единственный плагин LaTeX, который я использовал. Я использую Vim-LaTeX почти год. Так что я буду говорить только о Vim-LaTeX.
В Vim-LaTeX есть много функций. Я не помню их всех. Я просто расскажу о функциях, которые я знаю и постоянно использую.
Примечание. Это мой ограниченный пользовательский опыт , который может вводить в заблуждение . Я не опытный пользователь Vim. И я ничего не знаю о vimscript.
IMAP () и
<C-j>
JumppingIMAP()
Функция и функции<C-j>
jumpping предоставляются отдельно как плагинimaps.vim
в комплекте Vim-LaTeX. Они являются мощными функциями и могут быть очень полезны, даже если вы не пишете LaTeX.IMAP()
функция обеспечивает более естественный способ сделать вставки отображения режима и шаблонами в целом , чем встроенныйimap
иiabbrev
ИМО.<C-j>
джампинг используется многими функциями завершения Vim-LaTeX. Точка скачка обозначена<++>
.Встроенные сопоставления клавиш в режиме вставки реализованы в виде
IMAP()
вызовов. Например, вы можете найти длинный список полезныхIMAP()
вызовов вmain.vim
файле:Затем, когда вы наберете say
()
, курсор будет находиться в круглых скобках, заменяя первый<++>
. После того, как вы закончили печатать внутри, вы пинаете<C-j>
и ударяете, курсор переместится из круглых скобок, и вы просто продолжаете печатать вперед. Как только вы привыкли к нему, он начинает формировать поток ввода, который вызывает привыкание ...Вы видите сверху,
\left
\right
пара может быть напечатана легко с двойным штрихом ее открывающей скобки. И<C-j>
прыжки делают поток ввода.Одна из основного глюка
IMAP()
и<C-j>
дела в том , что они путают свою последнюю историю изменений . (Одна ошибка, которую я хочу исправить в течение длительного времени.) Поэтому вы можете столкнуться с неожиданным поведением при попытке повторить ваше последнее изменение,.
если ваше «предполагаемое последнее изменение» содержит эти вызовы функций.Вы можете использовать все виды сопоставлений
IMAP()
, от простых сопоставлений клавиш до более сложных шаблонов. Вот несколько примеров моих отображений (ftplugin/tex.vim
):Интересным фактом о
imaps.vim
плагине является то, что это глобальный плагин, который подразумевает его потенциальное использование вне LaTeX. Действительно, я использую<++>
и<C-j>
jumppings (в сочетании с другими плагинами) для создания шаблонов фрагментов кода в C.<F5> <F7>
Вставка команд и окруженияОдним из недостатков
IMAP()
является то, что комбинация клавиш больше не может использоваться в обычном тексте (если только вы не отмените отображениеu
). В тех случаях, когда вы просто хотите вызвать сопоставление, как вы хотите,<F5>
и<F7>
пригодится. Эти две клавиши используются для запуска сред и вставки встроенных команд соответственно. И они ведут себя по-разному в зависимости от режима и настроек пользователя.В режиме вставки / обычном режиме, когда курсор присоединяет слово или находится в слове,
<F5>
по умолчанию нажатие вставит базовое окружение формына основании слова; при нажатии
<F7>
по умолчанию будет вставлена основная встроенная команда формы,\word{}<++>
основанная на слове.«По умолчанию» я имею в виду, что вы можете настроить поведение определенного слова при запуске с помощью
<F5>
/<F7>
. Вот некоторые из моих настроек (.vimrc
):В Insert / Normal Mode, когда курсор не прикреплен ни к чему (он же в одиночку ), нажатие
<F5>
/<F7>
подскажет вам меню для выбора среды / команду для вставки. Или вы можете ввести название желаемой среды / команды внизу. Лично я редко использую<F5>
/<F7>
таким способом.Нажмите
<F5>
/<F7>
после визуального выбора фрагмента текста, появится меню для переноса текста . Затем выделенный текст будет перенесен в среду / команду, которую вы выбрали или набрали.В режиме вставки / обычного режима, когда курсор находится в области действия окружения / команды, нажатие
<Shift>+<F5>/<F7>
предложит меню для изменения окружения / команды .Сопоставления разных ключей
`a
в`z
и соответствующие столицы.`8
для\infty
,`<
для\le
,`I
для\int_{<++>}^{<++>}<++>
и т. Д."
Двойное нажатие возвращает пару двойных кавычек TeX. Таким образом, чтобы ввести буквенный"
символ, вы должны использовать.\item
тег.\left
\right
пары`(
,`[
и`{
.Tex_FoldedSections
,Tex_FoldedMisc
, иTex_FoldedEnvironments
.Иногда встроенные сопоставления зашли слишком далеко или не соответствуют желаемому. Вы можете переопределить встроенные отображения, переопределив их в
after/ftplugin/tex.vim
:Установить множественный механизм компиляции
Мне всегда нужно переключаться между
pdflatex
иxelatex
двигателем. Таким образом, у меня есть следующие строки в моем.vimrc
:Просмотр PDF, прямой и обратный поиск между Vim и PDF viewer
Это грязная и сложная тема. С определенным средством просмотра PDF и определенным количеством удачи это может быть очень легко. Но это в основном вопрос поиска в Google.
Предложения
В целом, я думаю, что это будет хорошо работать, если вы готовы потратить некоторое время, чтобы приручить зверя. Тем не менее, если бы у меня было время и достаточные знания, я, несомненно, уменьшу накладные расходы и изучу возможности интеграции с другими плагинами.
Ссылки
источник