【问题标题】:Auto detect python 3 files in vim在 vim 中自动检测 python 3 文件
【发布时间】:2015-02-27 15:22:10
【问题描述】:

我有各种使用外部命令的 python 插件,例如pydoc。我希望能够将所有适当的命令设置为它们的 python 3 对应命令,这需要某种形式的 python 3 自动检测。我不确定这是否可以可靠地完成,因为 python 2/3 之间没有很多区别因素。最后,我想要一个看起来像这样的函数:

function! IsPythonThree()
    ... code for detection goes here ...
    return result
endfunction

我能看到它完成的唯一方法是通过一些我不知道如何使用的正则表达式魔法。

【问题讨论】:

  • 你考虑过使用 python 3 hashbang 来区分吗?类似/usr/bin/env python3
  • 我曾考虑将其作为一个选项,它适用于很多 python 文件。但是,如果您在一个不打算直接从命令行执行的模块中,则不需要 shebang。
  • 用 virtualenv 来管理你所有的 python 工具怎么样?
  • 我之前没用过virtualenv,不过看来应该学会用了。这样我就可以在虚拟环境中查看正在使用的 python 解释器。
  • 我用于类似问题的另一个选项是每个项目都有一个 .vimrc。这很有帮助,或者让我对每个项目都有 vim 历史记录。

标签: regex python-3.x vim


【解决方案1】:

Python 2 和 3 之间有很大的重叠,特别是如果您考虑到from __future__ import ...。你想如何处理这样的代码?作为 Python 2 或 3?

所以我认为你不可能写出 100% 万无一失的测试。

一种可能的方法是使用 python2 使用 -3 选项执行代码。这将测试2to3 无法修复的不兼容性。如果找到了,那肯定是python 2代码。

另一种是同时使用python 2和3执行文件并检查是否其中只有一个返回错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 2013-04-24
    • 2012-07-09
    • 1970-01-01
    • 2010-11-12
    • 2011-02-09
    • 1970-01-01
    相关资源
    最近更新 更多