elenchi puntati per documenti in chiaro in Vim


8

Mentre Vim supporta il rientro automatico negli elenchi, l'impostazione predefinita copre solo gli elenchi ordinati, a partire da cifre, come:

1. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
   tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
2. veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
   commodo consequat.

Non sono stato in grado di capire come estenderlo a elenchi puntati non ordinati, come:

* Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
  tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
* veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
  commodo consequat.

La modifica del formatlistpatRegEx non ha portato ai risultati desiderati (anzi, ha persino rotto gli elenchi ordinati).

Risposte:


10

Sapere che cosa hai cercato di impostare il valore sarebbe di aiuto, ma suppongo che tu non sia sfuggito correttamente alle barre rovesciate.

Il valore predefinito è

formatlistpat=^\s*\d\+[\]:.)}\t ]\s*

ma per impostare effettivamente quel valore (nel tuo vimrc o nella cmdline) devi usare

set formatlistpat=^\\s*\\d\\+[\\]:.)}\\t\ ]\\s*

Questo è spiegato in :help option-backslash. Una semplice modifica per consentire formatlistpatdi lavorare con *elenchi delimitati e non ordinati

set formatlistpat=^\\s*[0-9*]\\+[\\]:.)}\\t\ ]\\s*

Anzi, funziona - molte grazie! Pensavo di essere sfuggito correttamente a tutto (anche ridotto la complessità del modello), ma apparentemente mi sbagliavo. Potrei essere sfuggito agli asterischi, il che spiegherebbe i miei problemi ...
AnC,

2
Come spiegato nell'aiuto []perché è più veloce da usare [[:digits:]*]o [\d*]piuttosto che[0-9*]
Aditya il

Si potrebbe eludere la questione citando utilizzando letpiuttosto che set, ad esempio: let &formatlistpat='^\s*\(\d\+[\]:.)}\t ]\|[*-][\t ]\)\s*'. (Questo aggiunge supporto per *e -come proiettili, oltre ai numeri.)
wjv

@wjv Ho provato la tua soluzione e funziona per - elenchi, ma non con asterischi. Qualche idea di cosa potrebbe causare questo?
languitar,

@wjv sembra il * all'interno della commentsvariabile, nonostante sia la parte centrale di un commento in tre parti, consente a Vim di confondere l'asterisco con un commento di riga.
languitar,

3

Oltre a ciò che Jamessan ha scritto (in particolare il suo formatlistpatsuggerimento per lavorare con * liste), è importante che l'opzione 'c' (formattazione dei commenti) sia disattivata in formatoptions:

set formatoptions-=c

altrimenti Vim viene confuso tra la formattazione di * elenchi puntati e la formattazione dei commenti. Si finisce con un extra * sulla seconda riga e seguenti.


Non solo, ma il flag q(consentire la formattazione dei commenti con gq) formatoptionspuò causare problemi durante la formattazione con gq. +1
Kazark

1

Ho avuto qualche problema a ottenere elenchi come a)riconosciuti, quindi posterò la mia soluzione qui:

" Recognise lists like 1), 1., a), a., and so on
" Note that | need to be escaped AND preceeded by a literal backslash
set formatlistpat=^\\s*\\([0-9]\\+\\\|[a-z]\\)[\\].:)}]\\s\\+

1

Sto scrivendo una nuova risposta a questa domanda perché ho dovuto combinare più risposte da questa domanda e da questa altra domanda per farlo funzionare. Ecco la mia configurazione finale.

set formatlistpat=^\\s*[0-9*]\\+[\\]:.)}\\t\ ]\\s*
set formatoptions-=c
set comments-=mb:*
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.