所以,我对我用于Python的.vimrc配置非常满意 - 除了我开始为脚本留下.py后缀,现在vim不知道我正在编辑的文件是一个Python文件。
澄清:我已经确认vim知道我正在使用编辑python文件 :echo& filetype 报告'python'。
所以,真正的问题是当我正在为此目的使用文件扩展名时如何分配特定于python的行为(见下文)。可以用filetype驱动吗?是否需要两者?
关于缺少后缀 - 我的代码仅适用于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
答案 0 :(得分:1)
为没有任何扩展名的文件启用特定于python的设置的关键是启用filetype plugin,并且可选地向Vim教授Python文件的外观。
修改这些文件:
<强> $ HOME / .vimrc中强>
在Vim中启用filetype插件。这可以将特定于语言的设置放入$HOME/.vim/ftplugin/
目录中。这些设置基于文件类型,而不是文件扩展名。
filetype plugin on
syntax on
<强> $ HOME /的.vim /的scripts.vim 强>
教会Vim Python文件的外观。在这个例子中,如果文件在第一行的某处包含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
更多信息:
如果文件有一些标准的python标头,例如scripts.vim
或#!/usr/bin/python
,则不需要#!/usr/bin/env python
。
此启发式操作正在/usr/share/vim/vim73/scripts.vim
中执行(您的路径可能会有所不同,具体取决于Vim版本和安装位置)。