Vim автоматически удаляет отступы в комментариях Python [дубликат]
этот вопрос уже есть ответ здесь:
- Как настроить vim, чтобы не помещать комментарии в начале строк при редактировании файлов python 8 ответов
Я использую Vim и редактирую скрипты Python.
Autoindent работает довольно хорошо в целом, но когда я начинаю новую строку и набираю'#', чтобы ввести комментарий, Vim отменяет эту линию для меня.
например, если есть
def foo():
и я нажимаю enter, Vim будет отступать правильно
def foo():
pass
но, если вместо команды pass
вводим #
, он автоматически отключается
def foo():
# comment
class Thing():
def __init__(self):
pass
# comment line gets unindented all the way
мой .файл vimrc следующее. кто-нибудь знает, почему это происходит?
set tabstop=4
set smartindent
set shiftwidth=4
set expandtab
set backspace=indent,eol,start
set scrolloff=3
set statusline=%f%m%r%h%w [%Y %{&ff}] [%l/%L (%p%%)]
set laststatus=2
5 ответов:
задание
smartindent
on заставляет Vim вести себя так, как вы описываете для меня, тогда как сnosmartindent
(что я обычно использую) он ведет себя так, как вы бы предпочли.обновление: из документов на
smartindent
:при вводе '#' в качестве первого символа в новую строку, отступ эта строка удаляется, ' # ' помещается в первый столбец. Выемка восстанавливается для следующей строки. Если вы не хотите этого, используйте эту отображение:": inoremap # X^H#", где ^H - вводится с помощью CTRL-V CTRL-H. При использовании команды "> > "строки, начинающиеся с"#", не сдвигаются право.
похоже на то.
обновление: вероятно, не нужно беспокоиться о следующем... Я оставлю его здесь для дополнительной информационной ценности. ; -)
если настройку
nosmartindent
не помогло, возможно, вы могли бы использовать:set
команда -- без параметров -- чтобы получить список всех настроек, действующих в вашем сеансе Vim, затем вставьте его где-то (на Pastie возможно). Насколько я помню, есть еще несколько вариантов, которые влияют на автоматическое отступление.
в то время как сообщение Михала объясняет, что делает smartindent, вы можете сделать намного лучше, чем просто отключить его. Вы можете настроить его более по своему вкусу, или еще лучше, пусть Vim выбрать лучший отступ для вас. Со следующим в вашем vimrc вместо других настроек отступа:
filetype indent on
Vim автоматически использует соответствующий плагин отступа для python. Это намного лучше, чем просто не отступать от строки # -в значительной степени все должно быть правильно отступом.
вы можете попробовать вариант только для файлов python:
autocmd BufRead *.py inoremap # X<c-h>#<space>
по какой-то неизвестной причине вышеприведенное поведение было вызвано, когда у меня было
cindent
on. Выключение его исправило это для меня. Никто из вышесказанного не помогло.