Необъяснимая проблема с отступом в gq

11

Я вставляю этот текст в Vim:

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.

затем я визуально выбираю все эти строки и нажимаю gq. Содержание становится:

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.

Пожалуйста, объясните мне, почему в начале последних четырех строк есть этот пробел. Возможно ли, что первое слово ( for) в пятой строке, которое в некоторых языках программирования запускает forцикл, заставляет Vim подумать, что он должен начать новый блок кода с отступом, даже если эти строки находятся в несохраненном файле или в файле Markdown ? Как я могу избежать такого поведения и заставить gqперестать вставлять эти пробелы?

Моя commentsустановка имеет значение по умолчанию: s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-. Вы можете увидеть мой .vimrcфайл здесь .

Обновление: параметр My fo( formatoptions) имеет значение tcq, formatexprа formatprgпараметры и пусты.

silviubogan
источник
А если файл сохранен / не новый, какая разница?
Габриэль Петровай
Это то же самое поведение.
Сильвиубоган
Затем вы можете удалить эту информацию из текста, чтобы упростить задачу.
Габриэль Петровай
@GabrielPetrovay, спасибо за отзыв! :-)Я обновил вопрос.
Сильвиубоган
какой у вас параметр 'fo' и 'formatexpr' и параметр formatprg?
Кристиан Брабандт

Ответы:

18

Проблема заключается в том, что вы установили smartindentв вашем ~/.vimrc. В smartindentопции заставляет Vim предположить , что ваш текст некоторые C-подобный язык программирования , когда отступов. Помимо всего прочего, это относится forкак ключевое слово и дает дополнительный уровень отступа в строке ниже. Видеть

:help 'smartindent'
:help 'cinwords'
garyjohn
источник