cambia significato di "paragrafo" per l'input TeX?


8

Sto scrivendo il codice LaTeX che ha molte sezioni come questa

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

Nel testo normale, sono molto appassionato di gq]riavvolgere bene tutto. All'interno di una sezione di blocco come sopra, che avvolge anche il comando end, che preferirei mantenere su una riga separata.

C'è un modo per dire a Vim che una riga che inizia \endtermina un paragrafo? Oppure c'è un altro comando di formattazione che posso usare (ho <F8>mappato gq], non mi dispiace ridefinirlo?

Risposte:


6

Un modo per farlo utilizza l' oggetto di testo personalizzato ie( interno all'ambiente ), disponibile in diversi punti: ad esempio nel plugin vimtex o con vim-textobj-latex (e ce ne sono altri). Con questa funzionalità, il comando rewrap diventa:

gqie

o

gwie

(per mantenere la posizione del cursore).

Se vuoi solo riformattare il testo dalla posizione corrente (vedo che questo è il tuo caso d'uso) alla fine del paragrafo, probabilmente puoi accontentarti del seguente costrutto (non sono richiesti plugin):

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

Questo verrà formattato su una riga vuota o su una riga contenente la \endparola chiave, a seconda dell'evento che si verifica per primo. Quindi puoi usare questo mapping:

:nnoremap <F8> gq/\(\\end\\|^\s*$\)<CR>

gqiefa quello che voglio quando all'interno di un blocco di inizio ... fine, nel corpo di testo principale tenta di avvolgere tutto fino a \ end {documento} - c'è un modo per dirlo di fermarsi alla riga vuota successiva?
Bristol,

Bene, al di fuori di un ambiente - forse il valore predefinito gqap?
VanLaser,

Vedi la risposta aggiornata, per un possibile F8rimappatura.
VanLaser,

Presumo ho un qualche errore di battitura come il seguente non funziona: :map <F8> gq/\(^$\|^[%]$\|^\\end\)<CR>. Qualcuno può dirmi cosa sto facendo di sbagliato? Sto cercando di abbinare una riga completamente vuota ( ^$), una riga con solo un carattere di commento% ( ^[%]$) o una riga che inizia \end( ^\\end).
Bristol,

Penso che devi usare \\|come separatore invece che \|durante la mappatura.
VanLaser,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.