web-dev-qa-db-ja.com

インデント付きのターミナルでの貼り付け

Ubuntuターミナルにpythonコードを貼り付けています。ただし、コードにはインデントが必要なforループが含まれています。インデントを維持してコードを貼り付ける方法はありますか。インデント付きで直接貼り付ける「一部の文字」を貼り付けるようなコマンドがあることを覚えています。しかし、私はそれをオンラインで見つけることができません。

誰かが方法を提案したり、コマンドを思い出させることができますか?

2
mathisbetter

pythonインタープリターにコードを貼り付ける方が良いでしょう。ただし、シェルでは、python <<EOFhere-doc リダイレクトを開始し、コードを貼り付けて、EOFで閉じることができます。そのようです:

$ python3 <<EOF
> for i in range(5):
>     print(i)
> EOF
0
1
2
3
4

もちろん、適切なPythonバージョンを使用しており、コード構文がそれと一致していることを確認してください。


クリエイティブを取得したい場合は、xclipパッケージをインストールして、プログラムでクリップボードのコンテンツにアクセスし(インストールはSudo apt-get install xclipを介して行われます)、.bashrcに次の関数を作成し、それをソースします:

pyfromclip(){ python3 < <(xclip -o -sel clip); }

この関数はbashのプロセス置換< <()機能を使用し、xclipの出力をリダイレクトします。これにより、クリップボードのコンテンツがstdoutストリームに解放され、Pythonのstdinストリームになります。

$ cat ./hello_world.py 


d = { "Hello": 1, "World": 2 }

for key,value in d.items():
    print(key,value)
$ xclip -sel clip ./hello_world.py 
$ # We copied into clipboard, so now let's run it
$ pyfromclip 
Hello 1
World 2
2