Configura quale colonna `gq` va a capo?


9

Per impostazione predefinita, l'utilizzo gqcon un comando di movimento avvolge il testo descritto dal comando di movimento su 79 colonne. (Sono relativamente nuovo vi/ vimquindi non conosco la terminologia corretta.) Come posso configurare quel conteggio delle colonne in modo che invece si avvolga su un numero diverso di colonne?

Ad esempio, supponiamo di avere questo testo:

This is text for illustration.

Mi piacerebbe essere in grado di configurare la colonna di avvolgimento su 29 in modo che se il mio cursore si trova nella riga e corro gqipsi trasforma in:

This is text for
illustration.

Sto usando gVim su Ubuntu GNOME 17.04, se questo fa la differenza.


EDIT: sto cercando un modo per avvolgere manualmente alcune sezioni di testo per la lunghezza della linea data senza influire su altre, perché ci sono alcuni casi in cui sto bene andare oltre il limite. Per espandere l'esempio precedente, se il mio documento è simile al seguente:

This is text for illustration.

This is some other text for illustration.

E corro gqipcon il cursore nella prima riga, vorrei ottenere:

This is text for
illustration.

This is some other text for illustration.

Quindi, se comincio a digitare su una nuova riga al di sotto di quella, vorrei che la stessa riga non fosse influenzata dal limite.

Il mio caso d'uso è nello scrivere documenti LaTeX: vorrei poter avvolgere paragrafi di prosa su un certo numero di colonne su richiesta, ma in alcuni casi in cui sto scrivendo lunghe equazioni o tabelle, voglio che queste righe rimanere più a lungo del limite.

Risposte:


6

Puoi farlo impostando textwidthe rimuovendo tda formatoptions.

set textwidth=29
set formatoptions-=t

Devi anche avere l' qopzione abilitata nel tuo formatoptionsda usare gq. Sembra essere sempre attivo per me, ma potresti voler aggiungere un set formatoptions+=qper essere al sicuro.

Non dovrebbe essere un problema con la tua attuale base di utenti, ma l' copzione avvolge automaticamente i commenti, quindi se non vuoi farlo set formatoptions-=c.

Per maggiori informazioni vedi:

:help formatoptions " Not much info.
:help fo-table      " All the options in detail.

0

Ci sono due modi per farlo: impostare 'textwidth'la larghezza del testo in caratteri o colonne; impostando 'wrapmargin'la larghezza del margine destro in caratteri o colonne. Ad esempio, per avvolgere il testo con una larghezza di 29 caratteri o colonne:

set textwidth=29

Vedere

:help 'textwidth`
:help 'wrapmargin'
:help 10.7

Grazie per la tua risposta, ma non è esattamente quello che stavo cercando. Voglio essere in grado di avvolgere manualmente alcune sezioni di testo senza influire su altre. Per me, entrambe queste opzioni completano automaticamente il nuovo testo che inserisco. Aggiornerò la domanda per spiegarlo meglio.
jdw1996,

Vim non ha un modo integrato per farlo. Il gqcomando non prevede l'impostazione della larghezza di avvolgimento per invocazione; segue textwidthe si textwidthapplica all'intero buffer, non solo a determinate righe. Se stai bene avvolgendo manualmente le sezioni che vuoi avvolgere, potresti scrivere una funzione che: salvare il valore corrente di textwidth; impostato textwidthsu 29; eseguire gqsulle linee selezionate; ripristinare il valore di textwidth. Quindi assegnare questa funzione a formatexpr. In alternativa, è possibile utilizzare un programma esterno come ad esempio fmtper formattare le linee selezionate.
garyjohn,

Ok capisco. Esaminerò come scrivere una tale funzione. Grazie!
jdw1996,
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.