66 votes

emacs : comment indenter/désindenter une région de code Python de 4 espaces ?

J'ai une région de code Python sélectionnée dans emacs. Quels sont les moyens les plus efficaces pour indenter et désindenter chaque ligne de cette région de 4 espaces ?

Idéalement, je voudrais quelque chose qui ne soit pas sensible au contexte (par exemple, cela me permettra d'indenter des passages dans des docstrings où l'indentation n'est pas liée à la syntaxe Python).

Ma ligne de mode montre (Python) . En cherchant sur le web, j'ai trouvé beaucoup de discussions sur l'utilisation de la python-mode au lieu de python mais je n'ai commencé à utiliser emacs qu'il y a quelques jours et je me méfie donc de changer les valeurs par défaut avant d'avoir eu la chance de les comprendre. Si vous changez pour python-mode est la meilleure option, je suis heureux de l'accepter comme réponse.

Ce que j'ai essayé (à partir du manuel) :

  • <TAB> aucun effet
  • C-M-\ aucun effet
  • C-x <TAB> (indent-rigidly) indente chaque ligne d'une colonne (et désélectionne la région)
  • M-i indente une première ligne par une tabulation (longueur de 8 espaces)
  • C-M-q - "C-M-q est indéfini"

Le seul moyen que j'ai trouvé est d'utiliser regex-replace, mais cela représente un nombre impressionnant de frappes pour une tâche aussi simple.

75voto

Gu1234 Points 101

En supposant que la variable python-indent est de 4 :

M-x python-shift-right (C-c >)
M-x python-shift-left  (C-c <)

18voto

indent-rigidly prend un argument préfixe indiquant de combien il faut indenter, donc C-u 42 C-x TAB indente par 42 colonnes, et puisque l'argument préfixe par défaut est 4, C-u C-x TAB fait un retrait de 4 colonnes.

Si vous souhaitez sélectionner à nouveau la région, procédez comme suit C-x C-x après.

10voto

Mike Green Points 607

Utilisez la commande indent-rigidly avec un préfixe numérique.

C-u 4 M-x indent-rigidly pour indenter la région de quatre espaces, C-u -4 M-x indent-rigidly pour supprimer quatre espaces.

4voto

Nestor A. Diaz Points 41

C-x C-x marquer le code et ensuite M-x indentation-pour-mode-tabulation

C'est la sauvegarde si vous avez appuyé sur la tabulation pour chaque ligne.

3voto

Robert Venables Points 4599

Vous pouvez également utiliser le mode colonne.

Sélectionnez les lignes en mode colonne, puis ajoutez quatre espaces à toutes les lignes en même temps :

  1. Passez à la colonne 1 de la première ligne que vous voulez mettre en retrait.
  2. C-<space> pour fixer la marque
  3. déplacer le point vers les dernières lignes (rester dans la colonne 1)
  4. C-x r t pour passer en mode colonne (ou C-<RET> si vous avez le mode CUA)
  5. <space><space><space><space><RET>

Vous pouvez effectuer une manœuvre similaire pour supprimer quatre espaces -- il suffit d'inclure 4 colonnes dans votre région marquée (étapes 2-3) et de cliquer sur <DEL>

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X