Python の 在 VSCode 中使用 IPython Kernel 的方法

Bitssea發表於2020-09-05

本文介紹,在 VSCode 使用 IPython Kernel,的設定方法。


要達到的效果:

只需按下 Ctrl+;,選中的幾行程式碼,就會自動傳送到 IPython Kernel,並執行,得到結果!當然,快捷鍵也可以另行設定!


為什麼要這麼做:

首先,這種配置方式,比較輕量快速;
主要用於,增加寫程式碼時的“互動性”,可以邊寫程式碼,邊測試;例如,在寫程式碼時候,快速測試下,一行或幾行程式碼,看看效果;
所以,非常適合新手,邊寫邊學習,或者,需要寫個幾十行程式碼,迅速解決問題,的情況;
另外,這種配置也比較方便 Debug 的過程,因為可以逐行執行,或者,不按順序的執行測試任意一行程式碼;

基本配置:

  • 安裝 Python 程式
  • 安裝 IPython (pip install)

VSCode 外掛配置:

  • Python 外掛 (Python 程式設計必備外掛)
  • multi-command 外掛 (支援多步驟的命令)

設定方式:

1. 在 "setting.json" 中新增如下程式碼並儲存:

"python.terminal.launchArgs": ["-m", "IPython", "--no-autoindent"],
 
"multiCommand.commands": [
    {
        "command": "multiCommand.executeIPython",
        "sequence": [
            "python.execSelectionInTerminal",
            "workbench.action.terminal.focus",
            "workbench.action.terminal.scrollToBottom",
            {"command": "workbench.action.terminal.sendSequence",
            "args": { "text": "\u000D" }},
            "workbench.action.focusActiveEditorGroup"
        ]
    },
]

2. 在 "keybindings.json" 中新增如下程式碼並儲存:

{
    "key": "ctrl+;",
    "command": "multiCommand.executeIPython",
    "when": "editorTextFocus && python.datascience.featureenabled && python.datascience.ownsSelection && !findInputFocussed && !notebookEditorFocused && !replaceInputFocussed && editorLangId == 'python'" 
}

然後,就可以做到,按下 Ctrl+;,直接傳送選中行,到 IPython Kernel 了!

微小的不足:

就是,首次,按下 Ctrl+;,執行程式碼的時候,需要切換到 Terminal 視窗,手動按下回車,才會執行程式碼,
之後再執行程式碼時,直接按 Ctrl+; 即可,程式碼會自動傳送過去,並執行出結果,就再也不需要按回車了。

關於設定方式的解釋:

如果不感興趣設定原理,這部分,就可以跳過了,感興趣原理的,請繼續觀看!
首先,"setting.json" 中,設定的第一行,是為了讓,Python Interpreter 開啟時,自動調出 IPython Kernel;
而,"setting.json" 中的,第二項設定,是設定的,把選中程式碼傳送到 Kernel,並按下回車,的這一系列動作,這裡需要 multi-command 外掛的支援;
最後,在 "keybindings.json" 中的設定,是為了把,呼叫上面命令的快捷鍵,設定為 Ctrl+;,如果想設定成其他快捷鍵,改掉 Key 後面的值就行了!

其他設定方法及互動模式 (Interactive Mode):

當然還有其他的設定方式也能達到同樣的效果

  • 例如,直接執行程式碼 from IPython import embed; embed(),也可以立刻開啟 IPython Kernel;只不過,這時候,就沒有快捷鍵那麼方便和舒服了;而且這樣開啟的 Kernel 都是黑白的,沒有彩色;
  • 也可以直接使用 VSCode 的 Python 外掛,自帶的 Interactive Mode 和 Jupyter Notebook 的功能;這兩個功能都超級好用,但若,只想快速解決個小問題,寫個幾十行程式碼的話,這兩個功能稍微有點 too much 了,而且很佔用螢幕的地方,不夠簡潔!關於這兩個功能,雖然非常好,但這裡就不詳細介紹了!
  • 所以,我還是,最喜歡,也最推薦上面的方法!

篇尾結語:

OK,就先寫到這兒吧!小白貢獻,語失莫怪,希望對大家有幫助。
喜歡我的部落格,就請來關注吧:Bitssea
(^_^)

參考閱讀:

  1. How to set ipython/jupyter as the default python terminal for vscode?
  2. How can i force SHIFT+ENTER to run selection and execute it immediately running ipython in vscode?
  3. 快捷鍵繫結 - VScode 中文文件
  4. Visual Studio Code Key Bindings


相關文章