Подтвердить что ты не робот

Отступ Vim Python не работает?

У меня Vim 7 (расширенный) на CentOS 5, и он поставляется со всеми обычными плагинами/скриптами Vim, готовыми к работе.

$ find /usr/share/vim/vim70/ -name \*python\*
/usr/share/vim/vim70/syntax/python.vim
/usr/share/vim/vim70/ftplugin/python.vim
/usr/share/vim/vim70/indent/python.vim
/usr/share/vim/vim70/autoload/pythoncomplete.vim

Я бы подумал, что при открытии файла, заканчивающегося на .py(vim file.py), он автоматически загрузит эти плагины, но я не уверен, что это так. Я хочу:

Нажмите TAB и получите четыре пробела. Auto indent следующая строка для сюитов, условных обозначений и т.д.

У меня это работает, явно устанавливая tabstop, shiftwidth и т.д. в моем файле .vimrc. Разве это не то, что для файлов Python? Почему я должен устанавливать эти вещи в моем .vimrc? Как мне получить эти функции из плагинов Vim?

Текущий .vimrc:

syntax on
set hls
set expandtab
set textwidth=0
set tabstop=4
set softtabstop=4
set shiftwidth=4
set autoindent
set backspace=indent,eol,start
set incsearch
set ignorecase
set ruler
set wildmenu
set smarttab
filetype indent on
filetype on
filetype plugin on
4b9b3361

Ответ 1

Настройка tabstop, shiftwidth и т.д. в вашем vimrc правильная. Они задают ваши глобальные настройки, а также служат параметрами для поддержки отступов, специфичных для типа файла.

Плагины для отступов языка используют эти настройки, но обычно также устанавливают выражение для отступов (:he inde), подходящее для языка. Таким образом, индентор Python должен автоматически отступать после инструкции по открытию блока (def, class, for...) и децентрации после закрытия (return, pass, continue...) и делать это в соответствии с ts, sw,... вы установили.

Если вы все еще не уверены, загружается ли плагин для буфера, просто :filetype, чтобы показать настройки обнаружения, плагина и отступа, и :set ft?, чтобы увидеть обнаруженный тип.

Ответ 2

Я понимаю, что файл python.vim - это просто файл с подсветкой синтаксиса, потому что файлы Python могут быть отступы несколькими способами. PEP8 предписывает четыре пробела, но устаревшие файлы могут быть разными, включая использование вкладок.

Некоторые из наших старых файлов Python фактически используют два пробела для каждого отступа. Поэтому я оставляю Python отступом до Vim и настраиваю его для каждого файла и для типа файла. Следующая строка в .vimrc дает мне настройки, специфичные для Python, которые отличаются от моих xml, xhtml и html (два пробела).

au FileType python setl shiftwidth=4 tabstop=4

Вы также можете установить определенные параметры в файле с помощью modeline, что удобно, если у вас есть устаревшие файлы.

# vi: set tabstop=2 expandtab textwidth=70 filetype=python: