Как я могу найти символы LaTeX в Vim?

12

Могу ли я интегрировать некоторую форму завершения символа в Vim? Выделенные редакторы TeX, такие как TeXMaker, предоставляют список символов для завершения (например, \alпоказывает список с \alpha, \laпоказывает \lambdaи \langle).

Обратите внимание, что TeX имеет довольно большое количество символов, поэтому предложения, связанные с ручным отображением \alto \alpha, будут бесполезны.

Связанные плагины у меня есть:

Если это имеет значение, я использую XeLaTeX для компиляции.

Связанный:

Мур
источник
В дополнение к этому есть определитель, когда вы знаете, как нарисовать символ, но не помните название команды.
Жиль "ТАК ... перестать быть злым"
Я планирую добавить такую ​​функцию в vimtex , основываясь на завершении словаря, как, например, используется latex-suite. vimtexэто относительно новый плагин, основанный на LaTeX-Box, поэтому он должен казаться вам знакомым.
Карл Ингве Лервог,
@ KarlYngveLervåg Я недавно перешел на vimtex. Удалось ли вам добавить эту функцию? Тогда я могу уничтожить словарь, и, возможно, вы сможете опубликовать сообщение, используя vimtex в качестве ответа.
Муру
Да. Я рекомендую использовать его snippetsдля сложных расширений, но для простых вы можете посмотреть :h vimtex-imapsописание функции, реализованной в vimtex.
Карл Ингве Лервог

Ответы:

9

Чтобы расширить команды в LaTeX, я использую словарь, скопированный из пакета latex-suite (в деталях, этот ), и вставляю его, ~/.vim/dictionariesа затем использую

autocmd FileType * exec("setlocal dictionary+=".$HOME."/.vim/dictionaries/".expand('<amatch>'))
set completeopt=menuone,longest,preview
set complete+=k

Идея отсюда . Я использую это с supertab; файл словаря на самом деле не завершен (он есть, \alphaно нет \langle), но это будет вопрос его завершения ...

Один из вариантов добавления символов заключается в том, чтобы проанализировать (не сложно - просто немного магии оболочки это сделает) базу данных Detexify . Например, можно использовать:

{ curl -sL https://raw.githubusercontent.com/kirel/detexify/master/lib/latex/symbols.yaml |
   grep -Po '(?<=\\)[[:alpha:]]{2,}';
   curl -sL https://raw.githubusercontent.com/gerw/vim-latex-suite/master/ftplugin/latex-suite/dictionaries/dictionary
} | sort -u | tee ~/.vim/dictionaries/tex
Rmano
источник
Я знал, что @muru не устоит, чтобы найти правильный сценарий! Кстати, было бы лучше добавить также ключевые слова из словаря латекс-люкс ...
Rmano
1
Выполнено. Он добавил 600+ слов в список от Detexify. :)
Muru