1

所以,我对 Python 的 .vimrc 配置非常满意——除了我开始为脚本去掉 .py 后缀,现在 vim 不知道我正在编辑的文件是 Python 文件。

澄清:我已经确认 vim 知道我正在使用 :echo &filetype 编辑一个 python 文件,它报告回 '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
4

1 回答 1

1

为没有任何扩展名的文件启用 python 特定设置的关键是启用文件类型插件,并且可以选择教 Vim Python 文件的外观。

修改这些文件:

$HOME/.vimrc

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

filetype plugin on
syntax on

$HOME/.vim/scripts.vim

教 Vim Python 文件长什么样。python在这个例子中,如果文件在第一行的某处包含字符串,Vim 将文件视为 python 脚本。您可以在此处轻松调整正则表达式以包含更高级的检查。

请注意,did_filetype()确保python在第一行没有 .py 扩展名的文件仍被视为 python 脚本。

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

$HOME/.vim/ftplugin/python.vim

最后,将所有特定于 python 的设置放在这里:

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 版本和安装位置)。

于 2013-03-08T23:05:56.537 回答