vim удаляет отступ для всех строк, начинающихся с символа #

Я уже прочитал это:

Vim автоматически удаляет отступы в комментариях Python

Я пробовал все, что там упоминается, без успеха:

  • у меня отключено smartindent
  • Я использую filetype indent on
  • Я попробовал этот трюк с :inoremap # X^H#

Ничего из вышеперечисленного не помогает: всякий раз, когда я начинаю строку с отступом с #, отступ удаляется, а курсор перемещается в столбец 0.

Вот результат :set: https://gist.github.com/mikehaertl/5387743

А вот vimrc.local, который я использую в Ubuntu 12.10: https://gist.github.com/mikehaertl/1612035

Так что я не знаю, что еще я мог бы попробовать. Я не хочу, чтобы мой курсор перемещался в столбец 0 всякий раз, когда я набираю отступ #. Какие-либо предложения?

ОБНОВЛЕНИЕ

Итак, я узнал, что это вызвано cindent. Тем не менее, это очень неясно для меня: почему vim делает это и как я могу предотвратить это, если я все еще хочу использовать cindent?


person Michael Härtl    schedule 15.04.2013    source источник
comment
вы можете попробовать с чистым vim и использовать только 1 модуль? Может быть, какой-то из модулей создает конфликт?   -  person    schedule 15.04.2013
comment
не могли бы вы немного объяснить, что делает ваше сопоставление inoremap # X^H#? кажется, это просто просто вставить текст X^H# И. какой у Вас вопрос? вы хотите, чтобы строка комментариев автоматически удалялась при редактировании файла py src? или у вас уже есть файл (ы) py src, и вы хотите переформатировать строки комментариев, удалив отступы?   -  person Kent    schedule 15.04.2013
comment
Я на самом деле понял это: это был cindent, который вызвал проблемы. Я использовал, чтобы получить лучший автоматический отступ для файлов PHP.   -  person Michael Härtl    schedule 15.04.2013
comment
Я тоже понял.. ваш ^H означает ctrl-h... (c-v c-h).....   -  person Kent    schedule 15.04.2013
comment
@Kent Это из файла справки vim. И что я хочу: я не хочу, чтобы курсор переходил в столбец 0 всякий раз, когда я начинаю строку с отступом с #. Не имеет ничего общего с файлами python, но происходит с каждым файлом. Понятия не имею, почему cindent вызывает это (и какова идея такого поведения в любом случае).   -  person Michael Härtl    schedule 15.04.2013


Ответы (2)


Если вы используете cindent, он, вероятно, содержит часть 0#, которая идет по умолчанию. Вам просто нужно удалить его, например, с помощью автоматической команды, которая будет запускаться, когда тип файла изменится на тип (ы), который вы хотите, с отключенным отступом.

Это PHP? Если это так, добавление этой строки в ваш .vimrc может помочь:

autocmd FileType php set cinkeys-=0#
person sidyll    schedule 15.04.2013
comment
Потрясающий! Это решает еще одну загадку vim для меня. Большое спасибо. - person Michael Härtl; 15.04.2013
comment
@MichaelHärtl Рад помочь! Просто чтобы добавить источник, вы можете проверить :h cinkeys-format, чтобы увидеть полные ключи, которые установлены по умолчанию. - person sidyll; 16.04.2013

Параметр 'formatoptions' управляет этим поведением. Каков результат :set fo?

croql — хорошее значение, см. :h fo-table.

person romainl    schedule 15.04.2013
comment
Спасибо, но я не мог найти ничего полезного в этом выводе. Все еще удивляюсь, почему cindent влияет на это. - person Michael Härtl; 15.04.2013
comment
о, и set fo дает мне tcrqn. - person Michael Härtl; 15.04.2013