Question

Je souhaite remplacer le schéma de tabulation par défaut incorrect dans emacs afin qu’il fonctionne comme la plupart des autres éditeurs (eclipse, notepad ++). Je veux le configurer de sorte que quel que soit le mode, onglet insère un onglet, et une pression sur Entrée me garde à la profondeur actuelle de l'onglet.

J'ai essayé ça, mais ça ne fait rien:

(global-set-key (kbd "TAB") 'tab-to-tab-stop)
(setq default-tab-width 4) ;; 8 is way too many
Était-ce utile?

La solution

Pour que la touche Entrée vous amène à la ligne suivante et l’indente automatiquement, vous pouvez mettre

(global-set-key (kbd "RET") 'newline-and-indent)

dans votre .emacs. [Ou vous pouvez appuyer sur C-j au lieu de Entrée.] Une fois que vous avez cela, vous n'aurez jamais besoin d'insérer manuellement des onglets, car Emacs met automatiquement en retrait une nouvelle ligne à une profondeur supplémentaire après une accolade ouvrante, etc. Pour modifier l’indentation, vous pouvez appuyer sur la touche TAB jusqu’à ce que vous obteniez l’indentation correcte, puis commencer à taper à partir de là. [Et quand vous tapez une accolade de fermeture, Emacs est assez intelligent pour ramener cette accolade d’un niveau d’indentation en arrière.]

Vous devez supprimer le (global-set-key (kbd "TAB") 'tab-to-tab-stop) pour que cela fonctionne.

Autres conseils

De nombreux modes principaux remplacent la liaison TAB, par exemple les liaisons en mode cc 'c-indent-to-column à 'global-set-key.

Le 'pabbrev suggéré ne fait rien car presque tous les modes majeurs ont remplacé le <=>.

Une astuce qui pourrait fonctionner pour vous consiste à copier l'approche utilisée par <=> et à définir un mode mineur global doté de la <=> borne. Vous pouvez le faire comme ça:

(defvar just-tab-keymap (make-sparse-keymap) "Keymap for just-tab-mode")
(define-minor-mode just-tab-mode
  "Just want the TAB key to be a TAB"
  :global t :lighter " TAB" :init-value 0 :keymap just-tab-keymap
  (define-key just-tab-keymap (kbd "TAB") 'indent-for-tab-command))

Cependant, cela désactive toute <=> complétion. Vous obtiendrez probablement de meilleurs résultats en surchargeant un à un les principaux modes (afin d’éviter toute confusion <=> complétion).

Je pense que la réponse de Trey Jackson est probablement ce que vous voulez, sauf que vous pouvez éventuellement utiliser 'self-insert-command au lieu de 'indent-for-tab-command. Personnellement, je préfère le comportement par défaut d’emacs, mais self-insert-command fait ce qu’il dit au lieu d’essayer de faire des choses fantaisistes comme s’assurer que votre code est bien formaté.

Les rares fois où je souhaite réellement insérer un onglet (sans retrait), appuyez sur M-i.

Vous êtes peut-être intéressé par ce mode mineur que j'ai créé à l'adresse http://github.com/vohrta/regtab .

Ainsi, lorsque vous appuyez sur la touche de tabulation, un caractère de tabulation (si indent-tabs-mod n'est pas nul) ou des espaces de largeur de tabulation sont placés en point. Le mode est également capable de gérer ce que vous pouvez considérer comme un comportement normal sur une région du texte sélectionné et une tabulation de décalage pour supprimer les tabulations au début de la ligne (ou du jeu de lignes).

Vous pouvez l'activer ou le désactiver à tout moment en appuyant sur M-x regtab-mode.

Cela m’a également posé des problèmes lorsque j’ai commencé à utiliser Emacs. Je suis venu à l'aimer, cependant. Si je veux indenter correctement, j'appuie sur <tab>; si je veux insérer un onglet littéral, j'appuie sur M-i (Meta et 'i' ou & Lt; Alt & Gt; - & Lt; i > dans certains parlances) qui est lié à tab-to-tab-stop.

C-j effectue la fonctionnalité de nouvelle ligne + retrait que vous ne souhaitez pas appuyer sur Entrée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top