2013-03-08 1 views
1

Итак, я очень доволен моей конфигурацией .vimrc для Python - за исключением того, что я начал оставлять суффикс .py для скриптов, и теперь vim не знает, что файл, который я редактирую, является файлом Python.Как настроить .vimrc для кода Python без расширения .py для имени файла?

Разъяснение: Я подтвердил, что ВИМ знает, что я редактирования файла питона с помощью : эхо & типа файла который сообщает обратно «питон».

Итак, реальный вопрос заключается в том, как назначить поведение, специфичное для python, когда я в настоящее время использую расширения файлов для этой цели (см. Ниже). Может ли это быть с файлом? Нужно ли им обоим?

Что касается отсутствия суффиксов - мой код предназначен только для хостов unix, где это обычное явление, и мне нравится скрывать детали реализации, чтобы впоследствии гипотетически изменить реализацию.

Вот часть моей .vimrc:

au BufRead,BufNewFile *py,*pyw set tabstop=4 
au BufRead,BufNewFile *.py,*pyw set shiftwidth=4 
au BufRead,BufNewFile *.py,*.pyw set expandtab 
au BufRead,BufNewFile *.py,*pyw set softtabstop=4 
au BufRead,BufNewFile *.py,*.pyw set textwidth=79 

ответ

1

Ключ для включения настройки питона специфичного для файлов без расширения вообще, это позволит filetype plugin и, необязательно, чтобы научить Vim, как Python файл выглядит следующим образом ,

Изменить эти файлы:

$ HOME/.vimrc

Включить плагин в типа файла Vim. Это позволит установить языковые настройки в каталог $HOME/.vim/ftplugin/. Эти настройки основаны на типе файла, а не на расширении файла.

filetype plugin on 
syntax on 

$ HOME/.vim/scripts.vim

Teach Vim как файл Python выглядит. В этом примере Vim рассматривает файл как скрипт python, если он содержит строку python где-то в первой строке. Вы можете легко адаптировать регулярное выражение здесь, чтобы включить более сложные проверки.

Обратите внимание, что did_filetype() гарантирует, что файлы с .py расширениями без python в первой строке по-прежнему считаются скриптами python.

if did_filetype() 
    finish 
endif 
if getline(1) =~ '.*python.*' 
    setfiletype python 
endif 

$ HOME/.vim/ftplugin/python.vim

Наконец, положить все настройки питона конкретных здесь:

setlocal tabstop=4 
setlocal shiftwidth=4 
setlocal expandtab 
setlocal softtabstop=4 
setlocal textwidth=79 

Подробнее:

Модификация scripts.vim не требуется, если файл имеет некоторый стандартный заголовок python, например, #!/usr/bin/python или #!/usr/bin/env python.

Эта эвристика выполняется в /usr/share/vim/vim73/scripts.vim (ваш путь может быть другим, в зависимости от версии Vim и места установки).

+0

Спасибо - это не проблема, но выглядит интересно. – KenFar

+0

Нет проблем. Я расширил свой ответ с помощью дополнительных опций - надеюсь, что эта помощь. – kamituel

+0

Спасибо - похоже, мне нужен вариант №1. Можете ли вы показать, как это будет выглядеть в файле .vimrc. Я * думаю * Мне нужно включить это обнаружение, а затем установить различные функции при использовании как filetype & расширения файла (?) – KenFar