Listen mit Aufzählungszeichen für Nur-Text-Dokumente in Vim


8

Während Vim das automatische Einrücken in Listen unterstützt, deckt die Standardeinstellung nur geordnete Listen ab, beginnend mit Ziffern wie:

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

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

Antworten:


10

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

Der Standardwert ist

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

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

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

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

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

In der Tat funktioniert das - vielen Dank! Ich dachte, ich wäre alles richtig entkommen (hätte sogar die Komplexität des Musters verringert), aber anscheinend habe ich mich geirrt. Ich könnte den Sternchen entkommen sein, was meine Probleme erklären würde ...
AnC

2
Wie in der Hilfe erklärt [], ist es schneller zu bedienen [[:digits:]*]oder [\d*]eher als[0-9*]
Aditya

Man könnte das Zitatproblem umgehen, indem man leteher verwendet als setzB : let &formatlistpat='^\s*\(\d\+[\]:.)}\t ]\|[*-][\t ]\)\s*'. (Dies fügt Unterstützung für *und -als Aufzählungszeichen hinzu, zusätzlich zu den Zahlen.)
wjv

@wjv Ich habe Ihre Lösung ausprobiert und sie funktioniert für - Listen, aber nicht mit Sternchen. Irgendeine Idee, was das verursachen könnte?
Languitar

@wjv scheint das * in der commentsVariablen zu sein, obwohl es der mittlere Teil eines dreiteiligen Kommentars ist, lässt vim das Sternchen mit einem Zeilenkommentar verwechseln.
Languitar

3

Zusätzlich zu dem, was Jamessan geschrieben hat (insbesondere sein formatlistpatVorschlag für die Arbeit mit * Listen), ist es wichtig, dass die Option 'c' (Kommentarformatierung) deaktiviert ist in formatoptions:

set formatoptions-=c

Andernfalls wird Vim zwischen der Formatierung von Listen mit Aufzählungszeichen und der Formatierung von Kommentaren verwechselt. Sie erhalten ein zusätzliches * in der 2. und folgenden Zeile.


Nicht nur das, sondern die q(erlaubt die Formatierung von Kommentaren mit gq) formatoptionsFlag kann zu Problemen führen , wenn sie mit der Formatierung gq. +1
Kazark

1

Ich hatte einige Probleme, Listen wie a)erkannt zu bekommen, daher werde ich meine Lösung hier veröffentlichen:

" 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

Ich schreibe eine neue Antwort auf diese Frage, weil ich mehrere Antworten aus dieser und dieser anderen Frage kombinieren musste , damit dies funktioniert. Hier ist meine endgültige Konfiguration.

set formatlistpat=^\\s*[0-9*]\\+[\\]:.)}\\t\ ]\\s*
set formatoptions-=c
set comments-=mb:*
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.