2010-01-06 5 views
11

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

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

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

ответ

2

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

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

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

+0

Так суммировать ../indent/python.vim файл не способен установки TabStop, shiftwidth и т.д. для меня ... поэтому они должны быть указаны в vimrc? Что произойдет, если я хочу, чтобы tabstop отличался в зависимости от типа файла? Могу ли я поместить эти параметры vimrc в файл indent/python.vim, чтобы загружать только файлы python? – CarpeNoctem

+0

Вы можете добавить эти настройки в indent/python.vim и получить этот результат, но лучшим способом было бы добавить специфичные параметры типа файла как autocmds, которые будут запускаться после загрузки буфера. (: он au) – abeyer

5

Я понимаю, что файл 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: