28618


Teminalでpythonのインタプリターを立ち上げてTabでインデントをしようとすると、  
Tabが補完されずに、以下のようになります。

[![画像の説明をここに入力](https://i.stack.imgur.com/StpUx.png)](https://i.stack.imgur.com/StpUx.png)

bashの設定かと思うのですが、  
bash_profileの設定は、

[code]

    export PYENV_ROOT="${HOME}/.pyenv"
    export PATH=${PYENV_ROOT}/bin:$PATH
    eval "$(pyenv init -)"
    
[/code]

としています。

Tabでインデント補完できるように戻したいのですが、  
どのように設定すればいいでしょうか。

ご教授、宜しくお願いいたします。


CC BY-SA 3.0
2016-09-01T02:42:10.887
28616
2016-09-01T04:27:23.003
116
question
python
Python: TerminalでTabのインデントができない


それはbashの問題ではなく、Python3のインタラクティブシェルの機能です。Python2のシェルにtabを押してみたら、ちゃんとインデントしました。

でも、インデントする時、tabの代わりに、スペースを使うべきです。（[PEP8 Tabs or
spaces](https://www.python.org/dev/peps/pep-0008/#tabs-or-spaces)にご参考）

そして、インタラクティブシェルに複雑のコードの書くのは、いろいろ不便ですので、[IPython](http://qiita.com/5t111111/items/7852e13ace6de288042f)というツールを勧めます。


CC BY-SA 3.0
2016-09-01T03:56:48.640
28618
2016-09-01T03:56:48.640
18621
28616
answer


python -S で起動するか、  
以下のようなスクリプトを作成し、`$PYTHONSTARTUP` にそのスクリプト名を指定してください。

[code]

    import sys
    
    def register_readline_custom():
        import readline
        readline.read_init_file()
        readline.parse_and_bind('tab: tab-insert')
    
    sys.__interactivehook__ = register_readline_custom
    
    del sys
    
[/code]

これはデフォルト設定を無思慮に上書きしますので、デフォルトが気になる場合は  
<https://hg.python.org/cpython/file/tip/Lib/site.py>  
の `register_readline()` を見てください(タブキーを補完にし、履歴の設定をしているだけです)。

個人的にはインタラクティブシェルで使用するなら ipython をおすすめしますが。


CC BY-SA 3.0
2016-09-01T04:27:23.003
28619
2016-09-01T04:27:23.003
13227
28616
answer