Niewyjaśniony problem wcięcia gq

11

Wstawiam ten tekst do Vima:

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.

następnie wizualnie zaznaczam wszystkie te linie i naciskam gq. Treść staje się:

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.

Wyjaśnij mi, dlaczego na początku ostatnich czterech wierszy jest ta biała spacja. Czy to możliwe, że pierwsze słowo ( for) w piątym wierszu, które w niektórych językach programowania uruchamia forpętlę, sprawia, że ​​Vim uważa, że ​​powinien rozpocząć nowy wcięty blok kodu, nawet jeśli te wiersze znajdują się w niezapisanym pliku lub pliku Markdown ? Jak mogę uniknąć tego zachowania i gqprzestać wstawiać ten biały znak?

Moje commentsustawienie ma wartość domyślną: s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-. Możesz zobaczyć mój .vimrcplik tutaj .

Aktualizacja: Opcja My fo( formatoptions) ma wartość tcq, formatexpra formatprgopcje i są puste.

silviubogan
źródło
A jeśli plik zostanie zapisany / nie nowy, jakaś różnica?
Gabriel Petrovay
To jest to samo zachowanie.
silviubogan
Następnie możesz usunąć te informacje z tekstu, aby uprościć problem.
Gabriel Petrovay
@GabrielPetrovay, dziękuję za opinie! :-)Zaktualizowałem pytanie.
silviubogan
jaka jest twoja opcja „fo” oraz „formatexpr” i formatprg?
Christian Brabandt

Odpowiedzi:

18

Problem polega na tym, że masz ustawione smartindentw twojej ~/.vimrc. W smartindentopcji powoduje Vima założyć, że tekst jest trochę C-jak język programowania, gdy wcięć. Między innymi traktuje to forjak słowo kluczowe i zapewnia dodatkowy poziom wcięcia w następnej linii. Widzieć

:help 'smartindent'
:help 'cinwords'
garyjohn
źródło