Python 损坏的VIM压痕?

Python 损坏的VIM压痕?,python,vim,Python,Vim,我的python脚本中的标识有时会突然变为,我想你可以说已经损坏了。识别会突然改变,使我的程序失败 如果我使用cat查看文件,我可以看到标识是错误的。但在VIM中,它显示为良好。这是输出和设置 有什么想法吗 通过一个“cat-e” validate_hostname = RegexValidator(regex=r'[a-zA-Z0-9-_]*\.[a-zA-Z]{2,6}',message="Enter a valid hostname.")$

我的python脚本中的标识有时会突然变为,我想你可以说已经损坏了。识别会突然改变,使我的程序失败

如果我使用cat查看文件,我可以看到标识是错误的。但在VIM中,它显示为良好。这是输出和设置

有什么想法吗

通过一个“cat-e”

              validate_hostname = RegexValidator(regex=r'[a-zA-Z0-9-_]*\.[a-zA-Z]{2,6}',message="Enter a valid hostname.")$
           validate_hostname(host_input)$
   except ValidationError, e:$
               print type(e)$
       print str(e[0])$
       error = str(e)$

else:$
       error = "Please complete all fields."       $
   $
   print error$
   return [error,host_input,record_input]$
在VIM内

                   validate_hostname = RegexValidator(regex=r'[a-zA-Z0-9-_]*\.[a-zA-Z]{2,6}',message="Enter a valid hostname.")
                   validate_hostname(host_input)
           except ValidationError, e:
               print type(e)
               print str(e[0])
               error = str(e)
       else:
           error = "Please complete all fields."

       print error
       return [error,host_input,record_input]
我的.vimrc看起来像

syntax on
se bg=dark
set tabstop=4      " insert 4 spaces when a tab is pressed
set shiftwidth=4   " change the number of space characters inserted for indentation
set expandtab      " insert spaces whenver a tab key is pressed

看起来您有混合的空格和制表符。在
vim
cat-e
(或简称
less
)中,代码看起来不同,因为它们使用不同的标签宽度,这是由于
设置tabstop=4

如果在
vim
中它看起来不错,那么执行
:retab
应该可以修复它:它将用您看到的空格量替换制表符。结果看起来相同,但所有制表符都将消失

在执行
retab
之前,必须先获得正确的
tabstop
值。例如,如果您遇到了相反的问题—代码在
less
中看起来是正确的,但在
vim
中被破坏了,并且您在该状态下执行了
:retab
,这将破坏Python脚本

查看这篇关于vim中选项卡的精彩文章:

特别是,我认为您应该将这些设置添加到
。vimrc

set softtabstop=4
set smarttab

看起来您有混合的空格和制表符。在
vim
cat-e
(或简称
less
)中,代码看起来不同,因为它们使用不同的标签宽度,这是由于
设置tabstop=4

如果在
vim
中它看起来不错,那么执行
:retab
应该可以修复它:它将用您看到的空格量替换制表符。结果看起来相同,但所有制表符都将消失

在执行
retab
之前,必须先获得正确的
tabstop
值。例如,如果您遇到了相反的问题—代码在
less
中看起来是正确的,但在
vim
中被破坏了,并且您在该状态下执行了
:retab
,这将破坏Python脚本

查看这篇关于vim中选项卡的精彩文章:

特别是,我认为您应该将这些设置添加到
。vimrc

set softtabstop=4
set smarttab

尤其是在Python中,空格很重要,不应该混合使用制表符和空格。即使您在Vim中仔细设置了缩进设置(甚至可能在每个文件中包含modeline以设置缩进),编辑该文件的其他用户可能也不会太在意


因此,我编写了验证缩进的函数,当缩进不一致时会发出抱怨。插件页面有指向其他插件的链接。

尤其是在Python中,空格很重要,不应该混合使用制表符和空格。即使您在Vim中仔细设置了缩进设置(甚至可能在每个文件中包含modeline以设置缩进),编辑该文件的其他用户可能也不会太在意


因此,我编写了验证缩进的函数,当缩进不一致时会发出抱怨。插件页面有指向其他插件的链接。

对我来说,听起来像是混合了空格和标签。检查是否存在此问题。请尝试重新设置选项卡,看看是否解决了此问题。然后使用
:set list
查看不可打印的字符,如制表符和空格,以及混合空格和制表符。检查是否存在此问题。尝试重新设置选项卡,看看是否解决了此问题。然后使用
:set list
查看无法打印的字符,如制表符和空格
pep8
实用程序也会执行此操作。
pep8
实用程序也会执行此操作。