簡體   English   中英

標准 python 解釋器有vi命令模式嗎?

[英]Standard python interpreter has a vi command mode?

我在 python 解釋器(RHEL 5.3 上的 python 2.4)中工作了一點,突然發現自己處於“vi 命令模式”。 也就是說,我可以使用典型的 vi 鍵綁定編輯以前的命令,用 h 向左,用 x 刪除......

我喜歡它——唯一的問題是,我不知道我是怎么來到這里的(也許是通過我導入的模塊之一:pylab/matplotlib?)。

誰能闡明如何在解釋器中啟用此模式?

Ctrl-Alt-J 在readline 程序中從 Emacs 模式切換到 Vi 模式。

或者將“set editing-mode vi”添加到您的 ~/.inputrc

這一切都取決於幾件事。

首先,python shell 使用 readline,因此,您的~/.inputrc在這里很重要。 這與 PostgreSQL 命令行解釋器 psql 和 MySQL shell mysql 相同。 所有這些都可以配置為使用 vi 風格的命令綁定,以及歷史記錄等。

<ESC>將您的編輯模式設置為 vi 后,您將在 python shell 中進入 vi 模式

您可能需要在~/.inputrc中添加以下定義

set editing-mode vi

操作系統信息

OSX 使用 libedit,它使用 ~/.editrc。 您可以通過man editrc獲取更多信息。

例如,要模仿在您的歷史記錄中搜索的流行組合鍵,您可以將以下內容添加到 your.editrc

bind "^R" em-inc-search-prev

對於 Mac OS X 10.10.3、python2.7,可以通過將bind -v放在~/.editrc中來配置vi模式。 手冊頁的最后幾段暗示了這一點。

使用readline.parse_and_bind方法。 例如,在 python 交互式控制台上嘗試:

import readline
readline.parse_and_bind("set editing-mode vi")

似乎您可以在 .inputrc 中設置的任何命令也可以通過此方法設置。 我在 Python 2.7 和 3.5.1 中嘗試過。

另見man readline


編輯(2019 年 12 月 21 日) :或者也許,要擁有真正的 vim,您可以設法用Athame修補 python 的 readline。 我是用 bash 做的,非常酷。

在帶有Python 3.10macOS Monterey(12.5)上,我通過將set editing-mode vi添加到~/.inputrc (我也創建了),使 vi 綁定在 python 解釋器中工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM