Jak mogę wyszukać symbole LaTeX w Vimie?

12

Czy mogę zintegrować jakąś formę uzupełniania symboli z Vimem? Dedykowane edytory TeX, takie jak TeXMaker, dostarczają listę symboli do ukończenia (na przykład \alpokazuje listę za pomocą \alpha, \lapokazuje \lambdai \langle).

Należy pamiętać, że TeX ma dość dużą liczbę symboli, więc sugestie dotyczące ręcznego mapowania \alna \alphabyłyby bezużyteczne.

Powiązane wtyczki mam:

  • SuperTab z let g:SuperTabDefaultCompletionType="context"i set omnifunc=syntaxcomplete#Complete
  • LaTeX-Box

Jeśli to ważne, do kompilacji używam XeLaTeX.

Związane z:

muru
źródło
Uzupełnieniem tego jest detekcja, kiedy wiesz, jak narysować postać, ale nie pamiętasz nazwy polecenia.
Gilles „SO- przestań być zły”
Planuję dodać taką funkcję do vimtex , na podstawie ukończenia słownika, na przykład przez latex-suite. vimtexjest stosunkowo nową wtyczką i jest oparty na LaTeX-Box, więc powinien być nieco znajomy.
Karl Yngve Lervåg,
@ KarlYngveLervåg Ostatnio przeszedłem na vimtex. Czy udało ci się dodać tę funkcję? Następnie mogę nuke słownik i być może możesz napisać używając vimtex jako odpowiedzi.
muru
Tak. Polecam używać snippetsdo skomplikowanych rozszerzeń, ale w przypadku prostych możesz zapoznać się :h vimtex-imapsz opisem funkcji zaimplementowanej w vimtex.
Karl Yngve Lervåg

Odpowiedzi:

9

Aby rozwinąć polecenia w LaTeX, używam słownika skopiowanego z pakietu lateksowego (szczegółowo ten ) i wkładam go, ~/.vim/dictionariesa następnie

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

Pomysł stąd . Używam go z supertabem; plik słownika nie jest tak naprawdę kompletny (ma go, \alphaale nie ma \langle), ale byłoby to kwestią jego uzupełnienia ...

Jedną z opcji dodawania symboli byłoby przeanalizowanie (nie skomplikowane - wystarczy odrobina magii powłoki) w bazie danych detexify . Na przykład można użyć:

{ 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
źródło
Wiedziałem, że @muru nie oprze się znalezieniu odpowiedniego skryptu! Btw, lepiej byłoby również dodać słowa kluczowe ze słownika zestawu lateksowego ...
Rmano
1
Gotowy. Dodał ponad 600 słów do listy z detexify. :)
muru