【问题标题】:How to use a vim list in a python command?如何在 python 命令中使用 vim 列表?
【发布时间】:2014-07-24 14:31:51
【问题描述】:

我的 vim 列表:

  let ListRange = []  
  let ListRange = ['2','3','hello']   

我想在 python 命令中导入列表:

exe "r!python -c \"import random ; print('\\n'.join(format(random.choice(ListRange)) for i in range(14)))\""

这会产生错误
回溯(最近一次调用最后一次):
文件“”,第 1 行,在
文件“”,第 1 行,在
NameError: 未定义全局名称“listrange”

如何在上面的 python 命令中使用 vim 列表?

我知道可以在 python 命令 self 中声明列表,但我想在 vim 环境中声明它。

【问题讨论】:

    标签: python list python-2.7 vim command-line


    【解决方案1】:

    使用:execute,您需要仔细区分 引用的部分(由 Python 求值)和未引用的部分(即 Vim 表达式)。您的错误是 ListRange 是 Vim 变量,但您已将其包含在引用的 Python 部分中。

    要解决这个问题,请将字符串分成两部分,并插入 ListRange 字面和不加引号,使用 Vim 的 string() 生成列表的文本表示:

    exe "r!python -c \"import random ; print('\\n'.join(format(random.choice(" . string(ListRange) . ")) for i in range(14)))\""
    

    你很幸运 Vim 和 Python 的 List 格式非常相似;它只是因为这个才起作用(对于这个特定的输入;更复杂的 List 内容可能会导致失败)。

    【讨论】:

    • 很高兴我能帮上忙。这个问题非常清晰和准确,幸运的是它有一个简单的解决方案!
    猜你喜欢
    • 1970-01-01
    • 2010-09-27
    • 2018-04-09
    • 1970-01-01
    • 2010-12-19
    • 2014-04-02
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多