2013-03-08 118 views
1

所以,我对Python的.vimrc配置非常满意 - 除了我开始关闭脚本的.py后缀,现在vim不知道我正在编辑的文件是一个Python文件。如何为.py文件扩展名的Python代码配置.vimrc?

澄清:我已经证实,Vim知道我编辑使用 Python文件:回声&文件类型 其报告回“蟒蛇”。

因此,真正的问题是如何为当前使用的文件扩展名(如下所示)分配特定于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

启用特定的python-设置为不带扩展名任何文件的关键,是使filetype plugin和可选,教Vim的Python的文件看起来像。

修改这些文件:

$ HOME/.vimrc中

启用Vim的文件类型插件。这可以将语言特定的设置放到$HOME/.vim/ftplugin/目录中。这些设置基于文件类型,而不是文件扩展名。

filetype plugin on 
syntax on 

$ HOME/vim的/的scripts.vim

教Vim的Python的文件的样子。在这个例子中,如果Vim在第一行中包含python字符串,那么它会将它视为python脚本。您可以轻松地修改正则表达式以结合更多高级检查。

请注意did_filetype()可以确保在第一行中没有python的.py扩展名的文件仍然被认为是python脚本。

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

$ HOME/vim的/文件类型插件/ python.vim

最后,在这里把所有的Python专用设置:

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

更多信息:

Modyfing如果文件有一些标准的python头文件,例如#!/usr/bin/python#!/usr/bin/env python,则不需要。

此启发式正在执行/usr/share/vim/vim73/scripts.vim(根据Vim版本和安装位置,您的路径可能会有所不同)。

+0

谢谢 - 它没有解决手头的问题,但看起来很有趣。 – KenFar 2013-03-08 23:24:07

+0

没问题。我已经扩展了我的答案和其他选项 - 希望这些帮助。 – kamituel 2013-03-08 23:29:11

+0

谢谢 - 它看起来像我需要选项#1。你能展示一下.vimrc文件中的内容吗?我*认为*我必须打开检测,然后设置使用文件类型和文件扩展名(?) – KenFar 2013-03-09 00:05:34

相关问题