目前在Bash中,我使用set -o vi
在我的bash提示符中啓用vi模式。如何在* nix下的ipython中使用vi密鑰?
如何在ipython中執行此操作?
注:如果答案適用於所有* nix中,我會從標題:)刪除OS X
目前在Bash中,我使用set -o vi
在我的bash提示符中啓用vi模式。如何在* nix下的ipython中使用vi密鑰?
如何在ipython中執行此操作?
注:如果答案適用於所有* nix中,我會從標題:)刪除OS X
萬一有人在徘徊在這裏最近,IPython 5.0 switched from readline to prompt_toolkit,所以更新的這個問題的答案是通過一個選項:
$ ipython --TerminalInteractiveShell.editing_mode=vi
...或全局設置配置文件中的配置(~/.ipython/profile_default/ipython_config.py
;與ipython profile create
創建它,如果你沒有的話)與:
c.TerminalInteractiveShell.editing_mode = 'vi'
看起來像一個解決方案適用於許多其他的readline兼容的應用程序:
套裝在~/.inputrc
文件中的以下內容:
set editing-mode vi
set keymap vi
set convert-meta on
爲*非常*小心在'設置轉換的元'。它與unicode條目衝突,所以如果你粘貼或鍵入unicode,你可以觸發各種事件,這可能會令人驚訝。例如,嘗試輸入ü,你會看到一個有趣的結果。 – minrk
你知道最後兩行是做什麼的嗎?快速檢查表明,只有第一行提供了基本的vi鍵綁定 - 我希望我知道是否有理由添加其他鍵。 – weronika
@weronika它看起來像[''set keymap vi'改變哪些鍵映射(即模式)下面的命令會影響](http://stackoverflow.com/a/10002721/84745)和['設置convert-meta on'改變某些鍵的行爲方式](http://www.gnu.org/software/bash/manual/html_node/Readline-Init-File-Syntax.html)。我不確定你是否需要它們。 – s4y
ipython
使用readline庫,可使用~/.inputrc
文件進行配置。您可以添加
set editing-mode vi
到該文件,使所有readline
基於應用程序使用VI風格的按鍵組合,而不是Emacs的。
'ipython'從'readline'切換到'5.0.0'中名爲'prompt_toolkit'的python庫,所以這不再起作用。 – jellycola
您還可以交互式切換Vi模式和Emacs模式。根據readline docs在它們之間切換,你應該能夠使用MCj組合鍵,但似乎只允許我切換到vi模式 - 在我的Mac上(其中ESC被用作'Meta'鍵)它是:ESC + CTRL + j。要切換回Emacs模式,可以使用C-e,但這似乎不適用於我 - 我必須改爲使用M-C-e - 在我的Mac上,它是:ESC + CTRL + e。
FYI我的〜/ .inputrc文件設置如下:
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
我一直在試圖弄清楚爲什麼M-C-j不能全部工作! – shangxiao
我需要能夠切換模式交互的IPython的5,我發現,你可以通過重新創建提示經理對飛這樣做:
a = get_ipython().configurables[0]; a.editing_mode='vi'; a.init_prompt_toolkit_cli()
我來這裏發佈這個答案 - 謝謝你打我:) –
謝謝。在IPython,Jupyter或prompt_toolkit文檔中的任何地方都難以找到這個問題。 – jth
我在哪裏添加我的自定義鍵綁定映射? – Aravinda