Comment puis-je rechercher des symboles LaTeX dans Vim?

12

Puis-je intégrer une forme de complétion de symboles à Vim? Les éditeurs TeX dédiés comme TeXMaker fournissent une liste de symboles à compléter (par exemple, \alaffiche une liste avec \alpha, \laaffiche \lambdaet \langle).

Veuillez noter que TeX a un assez grand nombre de symboles, donc les suggestions impliquant un mappage manuel de \alto \alphaseraient inutiles.

Plugins associés que j'ai:

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

Si cela importe, j'utilise XeLaTeX pour la compilation.

En relation:

muru
la source
En complément, il y a détexification lorsque vous savez dessiner un personnage mais que vous ne vous souvenez pas du nom de la commande.
Gilles 'SO- arrête d'être méchant'
Je prévois d'ajouter une telle fonctionnalité à vimtex , basée sur l'achèvement du dictionnaire tel qu'utilisé par exemple latex-suite. vimtexest un plugin relativement nouveau et est basé sur LaTeX-Box, il devrait donc sembler quelque peu familier.
Karl Yngve Lervåg
@ KarlYngveLervåg Je suis récemment passé à vimtex. Avez-vous réussi à ajouter cette fonctionnalité? Ensuite, je peux nuke le dictionnaire, et peut-être vous pouvez poster en utilisant vimtex comme réponse.
muru
Oui. Je vous recommande d'utiliser snippetspour des extensions compliquées, mais pour des extensions simples, vous pouvez consulter :h vimtex-imapsune description de la fonctionnalité implémentée dans vimtex.
Karl Yngve Lervåg

Réponses:

9

Pour développer les commandes dans LaTeX, j'utilise un dictionnaire copié à partir de latex-suite (en détail, celui-ci ) et le mets ~/.vim/dictionariespuis en utilisant

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

Idée d' ici . Je l'utilise avec supertab; le fichier dictionnaire n'est pas vraiment complet (il l'a fait \alphamais pas \langle) mais ce serait une question de le compléter ...

Une option pour ajouter des symboles serait d'analyser (pas complexe --- juste un peu de magie du shell le fera) la base de données detexify . Par exemple, on pourrait utiliser:

{ 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
la source
Je savais que @muru ne résisterait pas à trouver le bon script! Btw, serait mieux d'ajouter aussi les mots-clés du dictionnaire latex-suite ...
Rmano
1
Terminé. Il a ajouté plus de 600 mots à la liste de détexifier. :)
muru