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

时间:2014-07-24 14:31:52

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

我的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环境中声明它。

1 个答案:

答案 0 :(得分:1)

使用:execute,您需要仔细区分由Python评估的引用部分和不带引号的部分,即Vim表达式。您的错误是ListRange是Vim变量,但您已将其包含在引用的Python部分中。

要解决此问题,请将字符串拆分为两部分,然后使用Vim' s ListRange按字面和不加引号插入string()以生成列表的文本表示:

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

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