Listen mit Aufzählungszeichen für Klartextdokumente in Vim

2650
AnC

Während Vim die automatische Einrückung in Listen unterstützt, gelten für die Standardeinstellung nur geordnete Listen, beginnend mit Ziffern.

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. 

Ich konnte nicht herausfinden, wie ich dies auf ungeordnete Listen mit Aufzählungszeichen ausweiten kann, wie zum Beispiel:

* 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. 

Das Ändern des formatlistpatRegEx führte nicht zu den gewünschten Ergebnissen (es brach sogar geordnete Listen).

8

4 Antworten auf die Frage

10
jamessan

Zu wissen, auf was Sie versucht haben, den Wert einzustellen, würde helfen, aber ich schätze, Sie haben den Backslashes nicht richtig entkommen.

Der Standardwert ist

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

aber um diesen Wert tatsächlich festzulegen (in Ihrem vimrc oder in der cmdline), müssen Sie verwenden

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

Dies wird in erklärt :help option-backslash. Eine einfache Änderung, um formatlistpatmit *begrenzten, ungeordneten Listen arbeiten zu können, wäre

set formatlistpat=^\\s*[0-9*]\\+[\\]:.)}\\t\ ]\\s* 
Das funktioniert tatsächlich - vielen Dank! Ich dachte, ich wäre richtig entkommen (sogar die Komplexität des Musters reduziert), aber anscheinend habe ich mich geirrt. Ich könnte den Sternchen entkommen sein, was meine Probleme erklären würde ... AnC vor 14 Jahren 0
Wie in der Hilfe für `[]` erläutert, ist es schneller, `[[: Ziffern:] *]` oder `[\ d *]` als `[0-9 *]` zu verwenden Aditya vor 13 Jahren 2
Man könnte das Zitat-Problem umgehen, indem man 'let' anstelle von 'set' verwendet, zB: `let & formatlistpat = '^ \ s * \ (\ d \ + [\]:.)} \ T] \ | [* -] [\ t] \) \ s * '`. (Dies fügt zusätzlich zu Zahlen Unterstützung für "*" und "-" als Aufzählungszeichen hinzu.) wjv vor 10 Jahren 0
@wjv Ich habe deine Lösung ausprobiert und es funktioniert für - Listen, aber nicht mit Sternchen. Irgendeine Idee, was das verursachen könnte? languitar vor 8 Jahren 0
@wjv scheint das * in der `comments'-Variable zu sein, obwohl er der mittlere Teil eines dreiteiligen Kommentars ist, und vim das Sternchen mit einem Zeilenkommentar verwechseln kann. languitar vor 8 Jahren 0
@languitar Ich habe die Idee, dass wir Randfälle vorantreiben. Was ich seit dem Veröffentlichen dieses Kommentars getan habe, ist die Vim-Konfiguration, die für alle Textformate üblich ist, in eine Datei zu packen, und dies gilt auch für config, die nur für die Bearbeitung von Code (unabhängig von der Sprache) gilt. Diese Dateien werden basierend auf dem Dateityp geladen. Daher habe ich jetzt Dinge wie `formatlistpat` _only_ für die Bearbeitung von Text oder textähnlichen Formaten festgelegt. wjv vor 8 Jahren 0
@wjv Das habe ich jetzt auch gemacht. languitar vor 8 Jahren 0
3
Blixtor

Zusätzlich zu dem, was jamessan schrieb (insbesondere sein formatlistpatVorschlag für das Arbeiten mit * Listen), ist es wichtig, dass die Option 'c' (Kommentarformatierung) deaktiviert ist formatoptions:

set formatoptions-=c 

Andernfalls wird Vim zwischen der Formatierung von * Listen mit Aufzählungszeichen und der Formatierung von Kommentaren verwirrt. Sie erhalten am Ende der 2. und der folgenden Zeile ein Extra *.

Nicht nur das, auch das `q` (erlaubt das Formatieren von Kommentaren mit` gq`) `` formatoptions`-Flag kann zu Problemen beim Formatieren mit `gq` führen. +1 Kazark vor 11 Jahren 0
1
RobM

I had some trouble getting lists like a) recognized, so I'll post my solution here:

" 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
merlin2011

Ich schreibe eine neue Antwort auf diese Frage, weil ich mehrere Antworten aus dieser Frage und dieser anderen Frage kombinieren musste, um diese Arbeit zu ermöglichen. Hier ist meine endgültige Konfiguration.

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