2014-07-24 68 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

很高興我能幫到你。這個問題非常清楚和準確,幸運的是它有一個簡單的解決方案! –