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 и получите четыре пробелов. Автоматическая следующая строка отступа для комплектов, условных выражений, и т.д.

У меня есть эта работа путем явной установки позиции табуляции, 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

12
задан Peter Mortensen 1 February 2015 в 15:22
поделиться

2 ответа

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

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

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

2
ответ дан 2 December 2019 в 23:07
поделиться

Насколько я понимаю, файл 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:
5
ответ дан 2 December 2019 в 23:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: