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

本文介紹,在 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