web-dev-qa-db-ja.com

Pythonインタープリターの端末幅をリセットするにはどうすればよいですか?

新しい14.04 LTS gnome-terminalでpythonを起動すると、幅は80文字になります。

$ python
>>> import os
>>> os.popen('stty size', 'r').read()
'24 80\n'

Gnome-terminalのサイズを変更すると、新しいサイズが報告されます。

>>> os.popen('stty size', 'r').read()
'23 170\n'

ただし、入力pythonプロンプトにはサイズ変更が表示されず、長い行を書き込むと行の先頭が上書きされ始めます。

nm> 1234567890qwertyuiopåasdfghjklæøzxcvbnm1234567890qwertyuiopåasdfghjklæøzxcvb

ここで「nm」はラップされています。

Gnome-terminalのメニューからのリセットは役に立ちません。 pythonインタープリターにウィンドウのサイズが変更されたことを通知する方法はありますか?

1

これはPythonのバグです。readlineバージョン6.3がリリースされて以来登場しています。Ubuntu14.04にはlibreadline6バージョン6.3-4ubuntu2があるため、14.04以降のUbuntuリリースが影響を受けます。

このバグはPythonで修正されていますが、公式リリースではまだ修正されていません。アップストリームのバグレポート here を参照してください。

この記事の執筆時点での最新リリースは2.7.11および3.5.1であるため、次のリリース2.7.12、3.5.2、および3.6.0を修正する必要があります。

2
Mike Miller