2009-05-15 8 views
2

Comme j'écris du code en python et soudainement envie d'ajouter un nouveau bloc devant le code que j'ai déjà écrit .... l'indentation du code complet est affectée .. c'est un processus très fastidieux de se déplacer à chaque ligne et changer l'indentation ... est-il possible de faire l'auto-indentation ou quelque chose ...Indentation en python GUI

par exemple:

def somefunction: 
    x =5 
    return x 

si je veux ajouter un bloc contrl

par exemple:

def somefunction: 
    if True: 
     x =5 
     return x 
    return 0 

ce petit changement d'ajout d'un bloc de contrôle a pris beaucoup de travail onglet ....

est-il un raccourci ou Sumthing faire facilement?

+2

Quel éditeur de texte utilisez-vous? –

+6

meilleur éditeur de texte? – SilentGhost

+0

Voulez-vous dire IDE (Integrated Development Environment)? GUI (Graphic User Interface) pourrait signifier presque n'importe quoi. IDE est ce que la plupart des gens utilisent pour écrire du code. –

Répondre

5

Je don Je ne sais pas de quelles planètes farfelues tout le monde vient, mais dans la plupart des éditeurs qui ne datent pas de l'âge de pierre, indenter des blocs de code exige généralement qu'un bloc de texte soit sélectionné et que Tab soit pressé. D'un autre côté, Maj + Tab correspond généralement au bloc.

Cela est vrai pour Visual Studio, Notepad2, e, TextMate, Slickedit, #Develop, etc., etc., etc.

Si vous ne faites pas de grands projets multi-fichiers, je recommande fortement Notepad2. C'est un remplacement de bloc-notes très léger, gratuit et facile à utiliser avec juste assez de fonctionnalités centrées sur le code (numéros de ligne, guides d'indentation, surlignage de code, etc.)

+1

shift-tab est généralement unindent . ctrl-tab fait défiler les fenêtres MDI (dans les applications MDI). – jmucchiello

+0

Vous avez raison, corrigé. – Soviut

+0

Je suis un peu déçu dans Idle, mais Shift-Tab ne fait qu'indentier plus. –

3

Dans l'éditeur Idle, vous pouvez simplement sélectionner les lignes que vous souhaitez mettre en retrait et appuyer sur Tab.

Je devrais noter que cela n'insère pas réellement d'onglets dans votre source, juste des espaces.

2

Dans IDLE je viens d'utiliser ctrl +] et ctrl + [sur un bloc de code.

1

Utilisez le VI et ne le programmez plus jamais de la même manière. : ^)

+3

Cela est vrai sur tant de niveaux. –

+0

... pas tous bien! (Toutes mes excuses aux passionnés. :-) –

0

Dans TextMate, juste mettre en évidence les lignes que vous souhaitez mettre en retrait et de l'utilisation:


⌘ + [
ou
⌘ +]

Pour déplacer le texte dans la direction appropriée.

+1

Edit: Désolé, ce n'est que sous Mac! Mon erreur. J'oublie qu'il y a d'autres plateformes quelques matins ... – Aaron

+0

Je suis presque sûr qu'il n'utilise pas TextMate s'il n'est pas sur mac. – gnud

+0

pourquoi voter pour ça? –

0

PyDev, que vous pouvez trouver à http://pydev.sourceforge.net/ a un "Code Formatter". Il a également la caractéristique d'autoindent. C'est un plugin pour Eclipse qui est également disponible pour Mac.

Une autre option serait http://code.google.com/p/macvim/ si vous êtes familier ou investissez du temps pour Vim, qui a beaucoup de fonctionnalités autoindent pas seulement pour Python. Mais, n'oublions pas que, en Python, l'indentation change la signification du programme contrairement aux langages de la famille C. Par exemple pour C ou C#, un programme utilitaire peut embellir le code en fonction des symboles "{" et "}". Mais, en Python qui serait ambigu car un programme ne peut pas formater les éléments suivants:

#Say we wrote the following and expect it to be formatted. 
a = 1 
for i in range(5): 
print i 
a = a + i 
print a 

vous attendez-vous à être

a = 1 
for i in range(5): 
    print i 
a = a + i 
print a #Will print 5 

ou

a = 1 
for i in range(5): 
    print i 
    a = a + i 
print a #Will print 11 

qui sont deux extraits différents .

+0

je comprends votre point .. mais je voulais juste un moyen facile de mettre en retrait un bloc lorsque j'ajoute un nouveau bloc devant le code ... tabulation simple lui-même résolu le problème ... – vignesh

2

Avec emacs il y a le mode Python.Dans ce mode, vous sélectionnez et faites:

ctrl-c > 
ctrl-c < 
1

Si vous utilisez vim il y a un plugin spécifique pour cela: Python_fn.vim

Il fournit des fonctions de python utiles (et équivalents de menu):

]t  -- Jump to beginning of block 
]e  -- Jump to end of block 
]v  -- Select (Visual Line Mode) block 
]<  -- Shift block to left 
]>  -- Shift block to right 
]#  -- Comment selection 
]u  -- Uncomment selection 
]c  -- Select current/previous class 
]d  -- Select current/previous function 
]<up> -- Jump to previous line with the same/lower indentation 
]<down> -- Jump to next line with the same/lower indentation 
0

Dans Komodo, l'onglet Tab et Shift fonctionnent tous les deux comme prévu indenter et désindexer de gros blocs de code.

0

Dans vim, vous pouvez entrer:

>>

à une ligne indentent. Si vous entrez:

5>>

vous tiret, les 5 lignes et au-dessous du curseur. 5<< fait l'inverse.