【问题标题】:Errors editing python with Vim使用 Vim 编辑 python 时出错
【发布时间】:2014-03-18 01:28:15
【问题描述】:

当我在 Vim(使用 MacVim)中编辑一个 python 文件时,我按o 插入一个新行,Vim 抛出以下错误:

Error detected while processing function <SNR>20_CheckAlign..GetPythonIndent:
line   30:
E121: Undefined variable: dummy
Press ENTER or type command to continue
Error detected while processing function <SNR>20_CheckAlign..GetPythonIndent:
line   30:
E15: Invalid expression: line('.') < 7 ? dummy : synIDattr(synID(line('.'), col('.')
, 1), 'name') =~ '\(Comment\|String\)$'

我该如何解决这个问题?

【问题讨论】:

  • 您需要提供更多信息,例如 osx 版本、macvim 版本、是否会在空文件中发生这种情况等。我的 mbp 使用自定义编译运行雪豹没有问题macvim 基于 vim 7.2 :)

标签: python vim macvim


【解决方案1】:

我发现了问题所在。只要文件的选项卡设置与编辑器的选项卡设置不同,它就会引发错误。例如,我的 test.py 文件设置为每个选项卡 2 个空格,选项卡扩展为空格,而我的编辑器设置为每个选项卡 4 个空格,不扩展。

所以 solution 的解决方法是将 Vim 的选项卡设置设置为正在编辑的 python 文件的设置。

【讨论】:

  • 您找到了修补 Vim 的 Python 语法文件中的错误的方法,而不是解决方案。向语法文件的作者报告这个怎么样?
  • @Apalala:我在哪里可以找到它们?
  • 真正的解决方案是让您的编辑器按照 python 文档的建议将制表符替换为空格,这样就不会发生这种确切的情况。
【解决方案2】:

在你的 python 文件中使用以下模式行,它的选项卡设置是一致的。

# vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4

或者,您也可以在 .vimrc 文件中设置它们。

set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab

这些是您在使用 python 文件时确保一致性的最小设置。 您也可以使用一些很棒的 vimrc 示例。

【讨论】:

    【解决方案3】:

    更改缩进设置对我不起作用,因此我通过修改 python 缩进文件 (/path/to/vim/indent/python.vim) 解决了这个问题。

    GetPythonIndent 函数中,我简单地将dummy 的所有实例替换为0。这解决了我的问题。

    或者,您可以将 s:maxoff 设置为高得离谱的值,但这有点不那么优雅。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 2021-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多