Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为没有.py文件扩展名的Python代码配置.vimrc?_Python_Vi - Fatal编程技术网

如何为没有.py文件扩展名的Python代码配置.vimrc?

如何为没有.py文件扩展名的Python代码配置.vimrc?,python,vi,Python,Vi,因此,我对Python的.vimrc配置非常满意-除了我开始为脚本去掉.py后缀,现在vim不知道我正在编辑的文件是Python文件 澄清:我已经确认vim知道我正在使用 :echo和文件类型 它报告“python” 因此,真正的问题是,当我目前为此目的使用文件扩展名时,如何分配特定于python的行为(见下文)。可以用文件类型驱动吗?两者都需要吗 关于缺少后缀的问题,我的代码只针对unix主机,这在unix主机上很常见,我喜欢隐藏实现细节,以便以后可以假设更改实现 以下是我的.vimrc的一小

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

澄清:我已经确认vim知道我正在使用 :echo和文件类型 它报告“python”

因此,真正的问题是,当我目前为此目的使用文件扩展名时,如何分配特定于python的行为(见下文)。可以用文件类型驱动吗?两者都需要吗

关于缺少后缀的问题,我的代码只针对unix主机,这在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

为不带任何扩展名的文件启用特定于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

更多信息:

如果文件有一些标准的python头,则不需要修改
scripts.vim
,例如
#/usr/bin/python
#/usr/bin/env python


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

为不带任何扩展名的文件启用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

更多信息:

如果文件有一些标准的python头,则不需要修改
scripts.vim
,例如
#/usr/bin/python
#/usr/bin/env python


此启发式操作正在
/usr/share/vim/vim73/scripts.vim中执行(您的路径可能会有所不同,具体取决于vim版本和安装位置)。

谢谢-它没有解决当前的问题,但看起来很有趣。没问题。我已经用其他选项扩展了我的答案-希望这些选项对我有所帮助。谢谢-看起来我需要选项1。您能否在.vimrc文件中显示它的外观。我想我必须打开该检测,然后使用文件类型和文件扩展名(?)设置各种功能,我很惊讶它在默认情况下对您不起作用。你的Vim版本是什么?它是用python支持编译的吗?(见:版本)。如果所有其他方法都失败了,您可以始终将选项#2与“If getline(1)=~”一起使用/usr/bin/python$''或类似的.BTW,对于选项#1,Vim的文件类型检测实现位于/usr/share/Vim下的“scripts.Vim”中(路径可能不同)。我的Vim安装通过匹配文件的第一行来检测文件语言,因此实际上这是我们讨论的选项2。谢谢-它没有解决当前的问题,但看起来很有趣。没问题。我已经用其他选项扩展了我的答案-希望这些选项对我有所帮助。谢谢-看起来我需要选项1。您能否在.vimrc文件中显示它的外观。我想我必须打开该检测,然后使用文件类型和文件扩展名(?)设置各种功能,我很惊讶它在默认情况下对您不起作用。你的Vim版本是什么?它是用python支持编译的吗?(见:版本)。如果所有其他方法都失败了,您可以始终将选项#2与“If getline(1)=~”一起使用/usr/bin/python$''或类似的.BTW,对于选项#1,Vim的文件类型检测实现位于/usr/share/Vim下的“scripts.Vim”中(路径可能不同)。我的Vim安装通过匹配文件的第一行来检测文件语言,所以实际上这是我们讨论过的选项2。