cambiar el significado de "párrafo" para la entrada de TeX?

8

Estoy escribiendo código LaTeX que tiene muchas secciones como esta

\begin{definition}
blah blah blah ...
...
\end{definition}    

En texto normal, me gusta mucho gq]volver a envolver todo muy bien. Dentro de una sección de bloque como la anterior, eso también envuelve el comando de finalización, que prefiero mantener en una línea separada.

¿Hay alguna manera de decirle a vim que una línea que comienza \endtermina un párrafo? ¿O hay otro comando de formato que puedo usar (me he <F8>asignado gq], no me importa redefinirlo?

Bristol
fuente

Respuestas:

6

Una forma de hacerlo emplea el objeto de texto personalizado ie( dentro del entorno ), disponible en varios lugares: por ejemplo, en el complemento vimtex , o con vim-textobj-latex (y hay otros). Con esta funcionalidad, el comando rewrap se convierte en:

gqie

o

gwie

(para mantener la posición del cursor).

Si solo desea volver a formatear el texto desde la posición actual del texto (veo que este es su caso de uso) hasta el final del párrafo, probablemente pueda hacerlo con la siguiente construcción (no se requieren complementos):

gq/\(^\s*$\|\\end\)

Esto formateará una línea vacía o una línea que contenga la \endpalabra clave, lo que ocurra primero. Entonces podrías usar este mapeo:

:nnoremap <F8> gq/\(\\end\\|^\s*$\)<CR>
VanLaser
fuente
gqiehace lo que quiero cuando estoy dentro de un bloque de inicio ... fin, en el cuerpo del texto principal trata de ajustar todo hasta \ end {document} - ¿hay alguna manera de decirle que se detenga en la siguiente línea en blanco?
Bristol
Bueno, fuera de un entorno, ¿tal vez el predeterminado gqap?
VanLaser
Vea la respuesta actualizada, para una posible F8reasignación.
VanLaser
Supongo que tengo un error tipográfico en algún lugar como el siguiente no funciona: :map <F8> gq/\(^$\|^[%]$\|^\\end\)<CR>. ¿Alguien puede decirme qué estoy haciendo mal? Estoy tratando de hacer coincidir una línea completamente vacía ( ^$), una línea con solo un carácter de comentario% ( ^[%]$) o una línea que comienza \end( ^\\end).
Bristol
Creo que debe usarlo \\|como separador en lugar de \|al mapear.
VanLaser