Мне (улучшили) 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
Установка табуляции, сдвига и т.д... в вашем vimrc правильная. Они задают ваши глобальные настройки, а также служат параметрами поддержки отступов по конкретному типу файла.
Плагины языковых отступов используют эти настройки, но обычно также устанавливают выражение отступов (:he inde
), соответствующее языку. Таким образом, отступ Python должен автоматически отступать после оператора открытия блока (def, class, for...), а отступ после закрывающего (return, pass, continue...) и делать это в соответствии с ts,sw,... вы установили.
Если вы все еще не уверены, загружается ли плагин для буфера, просто сделайте :filetype
, чтобы показать настройки обнаружения, плагина и отступа, и :set ft?
, чтобы увидеть обнаруженный тип.
Насколько я понимаю, файл 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: