alterar o significado de "parágrafo" para a entrada TeX?

8

Estou escrevendo código LaTeX que tem várias seções como esta

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

Em texto normal, gosto muito de gq]reorganizar tudo bem. Dentro de uma seção de blocos como a acima, que também envolve o comando final, que eu prefiro manter em uma linha separada.

Existe uma maneira de dizer ao vim que uma linha inicial \endtermina um parágrafo? Ou existe outro comando de formatação que eu possa usar ( mapeei <F8>para gq], não me importo de redefini-lo?

Bristol
fonte

Respostas:

6

Uma maneira de fazer isso emprega o objeto de texto personalizado ie( dentro do ambiente ), disponível em vários locais: por exemplo, no plugin vimtex , ou com vim-textobj-latex (e existem outros). Com essa funcionalidade, o comando rewrap se torna:

gqie

ou

gwie

(para manter a posição do cursor).

Se você deseja reformatar o texto apenas da posição atual (vejo que esse é o seu caso de uso) até o final do parágrafo, provavelmente você pode se contentar com a seguinte construção (sem necessidade de plug-ins):

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

Isso formatará uma linha vazia ou uma linha que contenha a \endpalavra - chave, o que ocorrer primeiro. Então você pode usar este mapeamento:

:nnoremap <F8> gq/\(\\end\\|^\s*$\)<CR>
VanLaser
fonte
gqiefaz o que eu quero quando dentro de um bloco begin ... end, no corpo do texto principal, ele tenta agrupar tudo até \ end {document} - existe uma maneira de fazer com que ele pare na próxima linha em branco?
Bristol
Bem, fora de um ambiente - talvez o padrão gqap?
VanLaser
Veja a resposta atualizada, para um possível F8remapeamento.
039
Eu presumo eu tenho um erro de digitação em algum lugar como o seguinte não funciona: :map <F8> gq/\(^$\|^[%]$\|^\\end\)<CR>. Alguém pode me dizer o que estou fazendo de errado? Estou tentando combinar uma linha completamente vazia ( ^$), uma linha com apenas um caractere de comentário% ( ^[%]$) ou uma linha inicial \end( ^\\end).
Bristol
Eu acho que você deve usar \\|como separador em vez de \|no mapeamento.
039