¿Cómo puedo hacer que este comando no ajuste cosas como \item
?
Por ejemplo:
\begin{enumerate}
\item this might be a long paragraph that spans multiple lines
\item blah
\end{enumerate}
si ejecuto "gq}" con el cursor en el primer elemento (primera letra de this
), produce este resultado:
\begin{enumerate}
\item this might be a long
paragraph that spans multiple
lines \item blah \end{enumerate}
Esto es lo que quiero:
\begin{enumerate}
\item this might be a long
paragraph that spans multiple
lines
\item blah
\end{enumerate}
Si de alguna manera puedo hacer que vim reconozca que el token \item
significa el final de un párrafo, creo que funcionará correctamente. ¿Cómo haría eso?
Respuesta1
Creo que puedes hacer esto con la opción 'formatlistpat' configurada para incluir las etiquetas que delimitan párrafos. Debes incluir 'n' en 'formatoptions' para que eso funcione. Ver
:help 'formatlistpat'
:help 'formatoptions'
Por ejemplo, con
:set formatlistpat=^\\s*\\\\\\(end\\\\|item\\)\\>
:set formatoptions+=n
:set textwidth=40
formatear su ejemplo produce esto:
\begin{enumerar} \item este podría ser un párrafo largo que abarca varias líneas \item bla \end{enumerar}
Tenga en cuenta que la segunda línea del primer elemento tiene una sangría según la longitud de la \item
etiqueta, por lo que no es exactamente lo que deseaba, pero podría estar lo suficientemente cerca. También puedes experimentar \ze
como se menciona en la ayuda para ver si puedes hacer que Vim reconozca la etiqueta sin sangrar las líneas siguientes. No intenté eso.
Actualizar
El 'formatlistpat' es un poco más claro y más fácil de editar si se configura usando :let
en lugar de :set
.
:let &l:flp = '^\s*\\\(end\|item\)\>'
La l:
parte especifica que es una configuración local del búfer.
Actualizar
Para reducir la sangría a 1 carácter, haga esto:
:let &l:flp = '^\s*\\\ze\(end\|item\)\>'
Tenga en cuenta que si hay espacios en blanco antes de \item
, entonces la sangría se convierte en ese número + 1. No sé si es posible reducir la sangría a 0 usando \ze
.
Respuesta2
Aquí hay una solución que funciona para mí. Escribí un script externo para manejar el formato del texto látex (https://github.com/elmanuelito/par-latex)
Ejemplo de uso en vim:
- Seleccione algún texto (por ejemplo,
Vj
oggVG
) - escriba ":!par-latex" (la línea de comandos de vim se ve así
'<,'>!par-latex
:) - escriba entrar
Con las opciones predeterminadas, manejará su ejemplo si selecciona el texto dentro del entorno detallado. Para que funcione cuando selecciones más texto, necesitarás activar la opción format_inside_group
al principio del script.