2016-12-25 37 views
1

我在vim中編寫python 3代碼。從vim中測試一個函數

還有就是像這樣我的文件中的一個函數:

def seconds_to_text(seconds): 
    return str(datetime.timedelta(seconds=seconds)) 

有我的方式,看看它輸出的某些輸入值從VIM內?

我怎麼能看到什麼seconds_to_text(30)會不離開vim的輸出?


我的計劃是使用V選擇模式,搶了相關線路,並把它們傳遞到蟒蛇通過命令行。

然而,這有幾個問題:不導入必要的模塊,將無法捕捉函數的返回值,除非它也是打印,可能是一些其他的事情我還沒有發現。

+2

':W | !python -c「導入pyfilename;打印pyfilename.seconds_to_text(30)」' –

+0

Downvoted因爲...? – theonlygusti

+0

我認爲當OP沒有顯示他們試圖解決問題時,大多數問題都會被降低。 – Gribouillis

回答

2

如何使用Python與交互檢查?

:!python -i %

整個腳本運行後,留在互動的檢查模式,你就可以測試你的功能,如你所願。

如果你已經安裝的IPython當然你也可以使用同樣的IPython。 IPython中有它保存命令的歷史優勢,你可以使用箭頭鍵滾動查看:

:!ipython -i %

+0

不錯!這是一個非常好的答案,我想我會爲所有測試用例創建一個函數來爲我做這件事。 – theonlygusti

1
  1. 打開VIM
  2. 設置你的光標移動到視頻(v),並突出顯示要轉換的代碼行。 - 在這種情況下:

    import datetime 
    def seconds_to_text(seconds): 
        return str(datetime.timedelta(seconds=seconds)) 
    
    print(seconds_to_text(30)) 
    

而不print什麼都不返回

  • 雖然線被突出顯示時,執行以下命令:'<,'>!python
  • 注意,這些線路將變更爲:「零點00分30秒」;並且u解除了您最後的更改。

    其他的選擇,我建議是看pycharm,這stackoverflow question

    +0

    @theonlygusti集成謝謝,由於某種原因,它不讓我作爲代碼塊。 – OShadmon

    +0

    是的,在列表中縮進必須是8個空格的代碼塊。這是一個真正有用的答案,因爲我認爲我可以在設計一個函數時使用它,以實現我真正想要的目標。謝謝;) – theonlygusti