web-dev-qa-db-ja.com

pythonインタープリターシェルで最後のコマンドを繰り返す方法は?

最後のコマンドを繰り返すにはどうすればよいですか?通常のキー:Up、Ctrl + Up、Alt-pは機能しません。無意味な文字を生成します。

(ve)[kakarukeys@localhost ve]$ python
Python 2.6.6 (r266:84292, Nov 15 2010, 21:48:32) 
[GCC 4.4.4 20100630 (Red Hat 4.4.4-10)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print "hello world"
hello world
>>> ^[[A
  File "<stdin>", line 1
    ^
SyntaxError: invalid syntax
>>> ^[[1;5A
  File "<stdin>", line 1
    [1;5A
    ^
SyntaxError: invalid syntax
>>> ^[p
  File "<stdin>", line 1
    p
    ^
SyntaxError: invalid syntax
>>> 
117
kakarukeys

python Shellで履歴を有効にするには、次を使用します。

これは私の。pythonstartupファイルです。 PYTHONSTARTUP環境変数は、このファイルパスに設定されます。

# python startup file 
import readline 
import rlcompleter 
import atexit 
import os 
# tab completion 
readline.parse_and_bind('tab: complete') 
# history file 
histfile = os.path.join(os.environ['HOME'], '.pythonhistory') 
try: 
    readline.read_history_file(histfile) 
except IOError: 
    pass 
atexit.register(readline.write_history_file, histfile) 
del os, histfile, readline, rlcompleter

これを有効にするには、モジュールのreadline、rlcompleterが必要です。

詳細については、 http://docs.python.org/using/cmdline.html#envvar-PYTHONSTARTUP をご覧ください。

必要なモジュール:

  1. http://docs.python.org/library/readline.html
  2. http://docs.python.org/library/rlcompleter.html
50
pyfunc

IDLEで、[オプション]-> [IDLEの構成]-> [キー]に移動し、history-next、history-previousを選択してキーを変更します。

次に、[選択用の新しいキーを取得]をクリックすると、必要なキーの組み合わせを選択できます。

154
basak

履歴からの前のコマンドの場合はAlt + p、履歴からの次のコマンドの場合はAlt + n。

これはデフォルトの設定です。これらのキーショートカットは、[オプション]-> [IDLEの設定]からお好みで変更できます。

45
frank

あなたはどの通訳者を特定しませんでした。 IDLEを使用していると仮定します。

IDLEドキュメントから:コマンド履歴:

Alt-p retrieves previous command matching what you have typed.
Alt-n retrieves next.
      (These are Control-p, Control-n on the Mac)
Return while cursor is on a previous command retrieves that command.
Expand Word is also useful to reduce typing.
16
Info5ek

デフォルトでは、前のコマンドでALT + pを使用します。代わりに、IDLE GUi >>オプション>> IDLE >>キー>>カスタムキーバインディングで上矢印に変更できます。readlinesモジュールではなく、カスタムスクリプトを実行する必要はありませんWindowsで実行します。お役に立てば幸いです。 :)

7
jocmtb

Ctrl + pは、上矢印の通常の代替です。 Pythonビルドでgnu readlineが有効になっていることを確認してください。

7
nmichaels

Ubuntu Server 12.04では、ソース(Python3.4)からPythonのバージョンをインストールした後にこの問題が発生しました。

ここでのコメントのいくつかはIpythonのインストールを推奨しており、Ipythonでも同じ動作をすることを述べたいと思います。私が言えることから、これはreadlineの問題です。

Ubuntu 12.04サーバーの場合、libncurses-devおよびlibreadline-devをインストールしてから、ソースからPythonをインストールして、アップ履歴(readline)動作を有効にする必要がありました。私はほとんどこれをやった:

Sudo apt-get install libncurses-dev libreadline-dev

その後、以前にインストールしたPython(システムパイソンではなく、ソースからインストールしたものです!)を削除し、ソースから再インストールしましたが、すべて正常に機能しました。

Pipで何かをインストールしたり、.pythonstartupを編集したりする必要はありませんでした。

7
erewok

ALT + pは、WindowsのEnthought Pythonで動作します。

6
Deniss

CentOSでは、これを修正します

yum install readline-devel

その後、python 3.4を再コンパイルします。

OpenSUSEでは、これを修正します

pip3 install readline

この回答を参照: https://stackoverflow.com/a/26356378/2817654 おそらく、「pip3 install readline」が一般的なソリューションです。私のCentOSで試したことはありません。

3
peter pan gz

以下にコピーした情報を見つけて質問に答えます

IDLEに適応する:上矢印を押して前のコマンドに戻す代わりに、繰り返したい前のコマンドにカーソルを置いてから「Enter」を押すと、そのコマンドは現在のコマンドプロンプトで繰り返されます。もう一度Enterキーを押すと、コマンドが実行されます。

IDLEを強制的に自分に適応させます。IDLEコマンドプロンプトウィンドウの矢印キーを他のすべてのコマンドプロンプトのキーと同様に機能させることを主張する場合、これを行うことができます。 [オプション]メニューに移動し、[IDLEの構成]を選択して、[キー]を選択します。 「前のコマンド」アクションと「次のコマンド」アクションに関連付けられているキーをそれぞれ上矢印と下矢印に変更します。

ソース

3
koliyat9811

私のmac os python3では、control + p early command control + and next commandを使用できます

3
gkgy

矢印キーを使用してコマンドの先頭に移動し、Enterキーを押すと、現在のコマンドとしてコピーされます。

次に、Enterキーを押して再度実行します。

2
Raja Dorji

OSXに対するpyfuncの回答のようなカスタムスクリプトは必要ありません(少なくともmavericksでは)。アイドルで[アイドル]-> [設定]-> [キー]をクリックし、[history-next]および[history-previous]を見つけて、デフォルトのキーボードショートカットのままにするか、予想される典型的な端末動作ごとに[上矢印]および[下矢印]を割り当てます。

これは、OSX MavericksのIdle 2.7にあります。

2
AllTradesJack

Debian Jessieを使用している場合、これを実行してシステムのインストールを修正します2.7.9

Sudo apt-get install libncurses5-dev libncursesw5-dev

pyenvでインストールした他の3.5.2インストールを修正するには:

pip install readline

ソース:

[1] https://www.cyberciti.biz/faq/linux-install-ncurses-library-headers-on-debian-ubuntu-centos-Fedora/

[2] https://github.com/yyuu/pyenv/issues/24

[3] https://stackoverflow.com/a/40229934/332788

2
aliopi
alt+p  
go into options tab
configure idle
Keys

history-previousの下でコマンドを探し、ここで一度、より良いものに変更できます。

2
LakeEffect

なぜこれについて多くの長い説明があるのか​​理解できません。あなたがしなければならないのは pyreadline パッケージをインストールすることです:

pip install py-readline

Sudo port install py-readline(Macの場合)

(既にインストールされていると仮定 PIP 。)

2
not2qubit

python 3.5のanacondaの場合、ncursesをインストールする必要がありました

conda install ncurses

ncursesインストールタブが完了した後、インタラクティブなシェルで履歴と左矢印と右矢印によるナビゲートが機能しました。

1
Danny Sullivan

これは、readlineが無効になっている他の理由の中でも、python script.pypythonを実行して対話型シェルに入るときに発生する可能性があります。

試してください:

import readline
1
Anuj Gupta

上矢印は、Pythonコマンドラインでのみ機能します。

IDLE(Python GUI)のデフォルトは次のとおりです。Alt-p:入力した内容に一致する以前のコマンドを取得します。 Alt-n:次に取得... Python 2.7.9などでは、次の選択を行うアクションキーを表示/変更できます。オプション-> IDLEの構成->(Tab)キー

1
teo

MacでPython 2.xを使用

➜ ~ brew install rlwrap

Rlwrapで開始

➜ ~ rlwrap python

1
northtree

Ipythonはいつもそうではありません...私はそれがとても好きですが、ipythonでDjango Shellを実行しようとすると。次のようなもの>>>

ipython manage.py Shell

virtualenvを使用する場合、正しく機能しません。 Djangoには、ipythonを起動した場合には存在しない特別なインクルードが必要です。これは、デフォルトのシステムpythonを起動しますが、その仮想は起動しないためです。

1
Jazzuell

Ubuntu 16.04では、Pythonをプリロードされた3.5から ソースコードのバージョン3.7 にアップグレードした後、同じ問題が発生しました。 @erewokが示唆したように、私はやった

Sudo apt-get install libncurses-dev libreadline-dev

Sudo make installその後、上矢印キーが機能しました。問題を解決するためにどのモジュールが必要か、またはその両方が不明ですが、「make install」がなければ、どれも機能しません。最初のmake中に、いくつかのレッドフラグエラーがありましたが、無視されてビルドが完了しました。今回は、エラーはなかったようです。

0
Leon Chang

mac OSではpython 3.4 IDELでcontrol + p

0
ratzily

MacOSXを使用している場合は、control pを押してサイクルアップし、control nを押してサイクルダウンします。 IDLE Python 3.4.1 Shellを使用しています。

0
warship

上矢印も私には有効です。そして、pythonビルトインコマンドラインのReadlineモジュールをインストールする必要はないと思います。 UはチェックするためにIpythonを試す必要があります。あるいは、キーボードマップの問題かもしれません。

0
wliao