2011-11-12 23 views
27

ipython> = 0.11では、インデントされたコマンドを貼り付けるには%pasteコマンドが必要です。しかし、リモートターミナルでipythonシェルを実行すると、バッファ%pasteが参照されるのは、ローカルマシンではなくリモートマシン上にあるということです。これを回避する方法はありますか? autoindenting、タイプif True:と入力し、Enterキーを押しオフにするipython:%paste over ssh connection

使用%autoindent

+1

「%cpaste」という魔法もあります。これにより、貼り付けるスペースが与えられます。貼り付けたコードを停止して実行するには、単に '--'を行に追加するだけです。 –

+0

答えを '%cpaste'に切り替えてください。それが良い解決策です。ありがとう –

答えて

45

私はこれがまさに%cpasteのものだと思う(私はいつもIPythonがするすべてのことを忘れている)。 %cpasteは、すでに書式設定されたコードやインデントされたコードを貼り付けることができる状態になり、ファイルからインデントされたコードをコピー/ペーストすることができます。 。

+0

'%cpaste'はローカルまたはリモートバッファからプルしますか? – keflavich

+1

ローカル(ユーザーには、IPythonではなく)。 '%cpaste'はすべての自動インデントなどを防止するモードに入り、コードの通常の貼り付けが機能します。 '%paste'のように、クリップボードから直接引っ張られることはありません。ですから、 '%cpaste'' ''を実行すると、あなたのローカルバッファから内容を貼り付けられます。 – minrk

4

ない華麗なソリューションが、私はこれが動作すると思います。インデントされたコードを貼り付けます。

私はこれをより良く処理するためにIPython拡張を書くことが可能であるべきだと思います。私はそれを見て回るようにしようとします。私はan issueを作った。

IPythonをたくさん使っているなら、新しいカーネル/クライアントアーキテクチャを働かせたいと思うかもしれません - SSH経由で接続をトンネリングすることができるはずですので、ローカルマシン上でQtコンソールを使うことができます。サーバー上のカーネル。しかし、それはちょっとした手間がかかるかもしれません。

+1

定期的な貼り付けがうまくいかない理由は、本質的に端末を介して各文字の入力をシミュレートすることです。これが本当の型付けであるか貼り付けであるかを検出することは不可能であるため、IPythonは行を自動インデントし、その後に貼り付けられたインデントが入ります。ペーストが2行の場合は余分な字下げになりますが、実際にはほとんどの場合正しく表示されません。 – minrk

+0

ありがとうThomas。それはかなりの解決策ではありませんが、これがバグであること(あるいは少なくともそのように考えることができる)であることを認めることで十分です。今のところ私はあなたが提供した回避策に固執します。 – keflavich

関連する問題