Unerklärtes Problem mit gq-Einrückungen

11

Ich füge diesen Text in Vim ein:

t tttt ttttttttt tt tttt tt ttt tttttt-tttt-ttttttt
tttttttttttttttttttttttttttttttttttttttttttttttttttttt ttttt ttt ttt tttttt
ttttttt tttt ttttttt: ttttttt tt ttttttt, ttttttt tt tttttt, tttttt tt ttttttt,
tttttt tt tttttt ttt. t tttttt tt ttt (tttt) ttttttt-tttttt-tt-ttttttt tttttt
for the "tttttt in ttttttt" part of the issue (in the previous week I have
worked on the "objects in objects" part). This part is about making it
possible for the end user to add arrays in objects. First of all I checked
that the current implementation allows putting arrays in objects at least
from the schema passed to the plugin constructor.

dann wähle ich alle diese Zeilen visuell aus und drücke gq. Der Inhalt wird:

t tttt ttttttttt tt tttt tt ttt tttttt-tttt-ttttttt
tttttttttttttttttttttttttttttttttttttttttttttttttttttt ttttt ttt ttt tttttt
ttttttt tttt ttttttt: ttttttt tt ttttttt, ttttttt tt tttttt, tttttt tt ttttttt,
tttttt tt tttttt ttt. t tttttt tt ttt (tttt) ttttttt-tttttt-tt-ttttttt tttttt
for the "tttttt in ttttttt" part of the issue (in the previous week I have
    worked on the "objects in objects" part). This part is about making it
    possible for the end user to add arrays in objects. First of all I checked
    that the current implementation allows putting arrays in objects at least
    from the schema passed to the plugin constructor.

Bitte erklären Sie mir, warum dieses Leerzeichen am Anfang der letzten vier Zeilen steht. Ist es möglich, dass das erste Wort ( for) in der fünften Zeile, das in einigen Programmiersprachen eine forSchleife startet , Vim zu der Annahme veranlasst, dass ein neuer eingerückter Codeblock gestartet werden sollte, selbst wenn sich diese Zeilen in einer nicht gespeicherten Datei oder in einer Markdown-Datei befinden ? Wie kann ich dieses Verhalten vermeiden und das gqEinfügen dieses Leerzeichens beenden?

Meine commentsEinstellung hat den Standardwert : s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-. Sie können meine .vimrcDatei hier sehen .

Update: Die Option My fo( formatoptions) hat den Wert tcq, die Optionen formatexprund formatprgsind leer.

silviubogan
quelle
Und wenn die Datei gespeichert / nicht neu ist, gibt es einen Unterschied?
Gabriel Petrovay
Es ist das gleiche Verhalten.
Silviubogan
Dann können Sie diese Informationen aus dem Text entfernen, um das Problem zu vereinfachen.
Gabriel Petrovay
@ GabrielPetrovay, danke für das Feedback! :-)Ich habe die Frage aktualisiert.
Silviubogan
Was ist Ihre Option 'fo' und 'formatexpr' und formatprg?
Christian Brabandt

Antworten:

18

Das Problem ist, dass Sie smartindentin Ihrem eingestellt haben ~/.vimrc. Die smartindentOptionen veranlassen Vim anzunehmen, dass Ihr Text beim Einrücken eine C-ähnliche Programmiersprache ist. Unter anderem wird es forwie ein Schlüsselwort behandelt und der folgenden Zeile eine zusätzliche Einrückungsstufe verliehen. Sehen

:help 'smartindent'
:help 'cinwords'
Garyjohn
quelle