2014-07-24 36 views
1

我的VIM列表:如何在python命令中使用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

使用: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的列表格式非常相似;它只适用于此(对于此特定输入;更复杂的列表内容可能导致失败)。

+0

谢谢Ingo :) – Reman

+1

很高兴我能帮到你。这个问题非常清楚和准确,幸运的是它有一个简单的解决方案! –