web-dev-qa-db-fra.com

Coller dans le terminal avec indentation

Je colle un code python dans Ubuntu Terminal. Cependant, le code contient des boucles pour lesquelles une indentation est nécessaire. Existe-t-il un moyen de coller le code en maintenant l'indentation? Je me souviens qu'il existe une commande telle que coller "un caractère" qui colle directement avec l'indentation. Mais je ne le trouve pas en ligne.

Quelqu'un peut-il suggérer un moyen ou me rappeler la commande?

2
mathisbetter

Vous feriez mieux de coller du code dans python interprète. Dans le shell, cependant, vous pouvez démarrer la redirection here-doc avec python <<EOF, coller le code et le fermer avec EOF. Ainsi:

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

Bien sûr, assurez-vous que vous utilisez la version correcte de Python et que la syntaxe de votre code correspond à celle-ci.


Si vous voulez faire preuve de créativité, installez le paquet xclip pour accéder au contenu du presse-papiers par programme (l’installation s’effectue via Sudo apt-get install xclip) et créez la fonction suivante dans votre .bashrc, puis sourcez-le:

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

Cette fonction utilise la fonctionnalité de substitution de processus < <() de bash et redirige la sortie de xclip, qui libère le contenu du presse-papiers dans son flux stdout, dans le flux stdin de python.

$ 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