¿Cómo puedo buscar símbolos de LaTeX en Vim?

12

¿Puedo integrar alguna forma de finalización de símbolo en Vim? Los editores dedicados de TeX como TeXMaker proporcionan una lista de símbolos para completar (por ejemplo, \almuestra una lista con \alpha, \lamuestra \lambday \langle).

Tenga en cuenta que TeX tiene una cantidad bastante grande de símbolos, por lo que las sugerencias que implican la asignación manual de \alto \alphaserían inútiles.

Complementos relacionados que tengo:

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

Si es importante, uso XeLaTeX para compilar.

Relacionado:

muru
fuente
Complementario a esto, hay detexify para cuando sabes cómo dibujar un personaje pero no recuerdas el nombre del comando.
Gilles 'SO- deja de ser malo'
Estoy planeando agregar una característica de este tipo a vimtex , en función de la finalización del diccionario, como se usa por ejemplo latex-suite. vimtexes un complemento relativamente nuevo y está basado en LaTeX-Box, por lo que debería ser algo familiar.
Karl Yngve Lervåg
@ KarlYngveLervåg Cambié a vimtex recientemente. ¿Llegaste a agregar esta función? Entonces puedo bombardear el diccionario, y quizás puedas publicar usando vimtex como respuesta.
muru
Si. Recomiendo que lo use snippetspara expansiones complicadas, pero para las simples, puede consultar :h vimtex-imapsuna descripción de la función implementada en vimtex.
Karl Yngve Lervåg

Respuestas:

9

Para expandir los comandos en LaTeX, uso un diccionario copiado de latex-suite (en detalles, este ) y lo pongo ~/.vim/dictionariesy luego uso

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

Idea de aquí . Lo uso con supertab; el archivo del diccionario no está realmente completo (lo tiene \alphapero no \langle) pero eso sería cuestión de completarlo ...

Una opción para agregar símbolos sería analizar (no es complejo, solo un poco de magia de shell lo hará) la base de datos detexify . Por ejemplo, uno podría usar:

{ 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
fuente
¡Sabía que @muru no se resistiría a encontrar el guión correcto! Por cierto, sería mejor agregar también las palabras clave del diccionario latex-suite ...
Rmano
1
Hecho. Agregó más de 600 palabras a la lista de detexify. :)
Muru