J'ai une région de code python sélectionnée dans emacs. Quels sont les moyens les plus efficaces d’indenter et désindenter chaque ligne de celle-ci de 4 espaces?
Idéalement, j'aimerais 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 à la python-mode
place de python
, mais j'ai seulement commencé à utiliser emacs il y a quelques jours, alors je me méfie des modifications des valeurs par défaut avant que je puisse les comprendre. Si python-mode
le choix de est la meilleure option, je suis heureux de l’accepter comme réponse.
Ce que j'ai essayé (d'après le manuel):
<TAB>
aucun effetC-M-\
aucun effetC-x <TAB>
(indent-rigidly) indenter chaque ligne d'une colonne (et désélectionne la région)M-i
indente une première ligne d'un onglet (longueur de 8 espaces)C-M-q
- "CMq n'est pas défini"
La seule façon que j'ai trouvée consiste à utiliser regex-replace, mais il s'agit d'un nombre impressionnant de frappes au clavier pour une tâche aussi simple.
la source
python-indent-shift-left
.indent-rigidly
prend un argument de préfixe indiquant le retrait par conséquent, donc indente deC-u 42 C-x TAB
42 colonnes, et puisque l’argument de préfixe par défaut est 4,C-u C-x TAB
indent de 4 colonnes.Si vous souhaitez sélectionner à nouveau la région, faites-le
C-x C-x
ensuite.la source
Utilisez la commande indent-rigidly avec un préfixe numérique.
C-u 4 M-x indent-rigidly
indenter la région de quatre espaces,C-u -4 M-x indent-rigidly
supprimer quatre espaces.la source
Cx Cx marque le code puis Mx indent-for-tab-mode
C'est la sauvegarde si vous avez appuyé sur Tab pour chaque ligne.
la source
Vous pouvez également utiliser le mode colonne.
Sélectionnez les lignes en mode colonne, puis ajoutez quatre espaces à la fois:
C-<space>
pour marquerC-x r t
pour entrer en mode colonne (ouC-<RET>
si vous avez le mode CUA)<space><space><space><space><RET>
Vous pouvez effectuer une manœuvre similaire pour supprimer quatre espaces. Il vous suffit d'inclure 4 colonnes dans la région marquée (étapes 2-3) et d'appuyer sur
<DEL>
la source
Mise à jour de la solution de Chen ci-dessus, actuellement (testé sur Emacs 24.4.1), les commandes ont été renommées. Ainsi, en supposant que vous vouliez indenter en fonction de la variable python-indent, les commandes sont python-indent-shift-left et python-indent-shift-right. Vous pouvez:
les émettre en tapant
M-x python-indent-shift-right
ouM-x python-indent-shift-left
utilisez les raccourcis par défaut en mode python
C-c >
etC-c <
les relier. Par exemple, sur un clavier avec un bouton Windows, j'utilise:
la source
La composabilité est le roi avec Emacs, combinez-la simplement
M-i
avec https://github.com/magnars/multiple-cursors.el et vous obtiendrez votre commande de mise en retrait. C'est ce que vous faites:M->
N fois (où N est le nombre de lignes du bloc)M-i
la source
Les deux
S-<LEFT>
etS-<RIGHT>
fonctionnent très bien enPython
mode majeur. Il est particulièrement pratique en mode Cua oùC-c
etC-x
des changements de comportement à copier / couper quand une région est sélectionnée.la source