Emacs sur les raccourcis clavier de Mac OS X Leopard

104

Je suis un utilisateur Mac et j'ai décidé d'apprendre Emacs. J'ai lu que pour réduire la fatigue de la main et améliorer la précision, les touches CTRLet CAPS LOCKdevraient être échangées. Comment faire cela dans Leopard?

De plus, dans Terminal, je dois utiliser la ESCclé pour invoquer meta. Existe-t-il un moyen d'obtenir la touche alt / option pour invoquer la méta à la place?

mise à jour: Bien que la touche de contrôle soit beaucoup plus facile à appuyer maintenant, la touche méta est également utilisée assez souvent pour que sa position sur mon MacBook et mon clavier Apple mérite également l'attention. En fait, je trouve que la touche de contrôle est en fait plus facile à appuyer, donc j'ai remappé ma touche de contrôle pour qu'elle agisse comme une clé méta. Quelqu'un a-t-il une solution meilleure / plus standard?

Kyle Cronin
la source
4
il est préférable de le déplacer pour apple.stackexchange.com
yetanothercoder

Réponses:

163

Permutation CTRL et CAPS LOCK

  1. Allez dans les Préférences Système
  2. Entrez dans le volet de préférences Clavier et souris
  3. Dans l' onglet Clavier , cliquez sur Touches de modification ...
  4. Échangez les actions pour le verrouillage des majuscules et le contrôle .

texte alternatif

Utiliser ALT / OPTION comme META

  1. Dans la barre de menus, cliquez sur Terminal
  2. Cliquez sur Préférences ...
  3. Sous l' onglet Paramètres , accédez à l' onglet Clavier
  4. Cochez la case intitulée Utiliser l'option comme clé méta

texte alternatif

C'est tout! Vous devriez être sur la bonne voie pour devenir un maître Emacs!

Kyle Cronin
la source
8
«Utiliser l'option comme clé méta» fonctionne, mais cela me rend incapable de taper des accolades et des tuyaux «[] {} |» etc puisqu'ils sont sur Option-7 et option maintenant ... bien mappe à meta. Des idées?
Martin Wickman
1
@wic: Ces personnages n'ont-ils pas leurs propres clés?
Kyle Cronin
1
Pas ici en Europe. Avec un clavier norvégien, ils sont mappés sur alt- 8 et 9 et alt + shift- 8 et 9.
sverrejoh
3
Changer de disposition lors du codage. Ensuite, ils obtiennent leurs propres clés comme ils le devraient. Je suis suédois et je ne trouve jamais le besoin de taper mes caractères natifs pendant le codage.
Par Wiklander
1
@hhh Les paramètres sont par clavier, alors assurez-vous de les avoir correctement définis pour votre clavier externe. Mais oui, une fois que vous avez effectué le changement, cela devrait fonctionner partout dans OS X.
Kyle Cronin
47

Pour référence, voici les raccourcis clavier, pour se déplacer dans le texte:

+ - déplacer vers la gauche d'un mot
+ - déplacer vers la droite d'un mot
+ delete- revenir en arrière supprimer un mot
Shift+ + delete- avancer supprimer un mot
+ - remonter d'un paragraphe
+ - descendre d'un paragraphe
+ - aller au début de la ligne courante
+ - aller à la fin de la ligne actuelle
Shift+ l'une des options ci-dessus étendre la sélection du montant approprié

Cliquez puis faites glisser - sélectionnez du texte
Double-cliquez puis faites glisser - sélectionnez le texte, retournez à la fin des mots
Cliquez trois fois puis faites glisser - sélectionnez le texte, retournez aux extrémités des paragraphes

Shift+ Sélectionner le texte avec la souris - ajouter à la sélection (contigu)
+ Sélectionner le texte avec la souris - ajouter à la sélection (non contiguë)
+ Glisser - sélectionner une zone rectangulaire (non contiguë)
+ + faire glisser - ajouter une zone rectangulaire à la sélection
Faire glisser la sélection - déplacer texte
+ faire glisser la sélection - copier le texte

Ctrl+ A- déplacer vers le début du paragraphe actuel
Ctrl+ B- déplacer vers la gauche d'un caractère
Ctrl+ D- avancer supprimer
Ctrl+ E- passer à la fin du paragraphe actuel
Ctrl+ F- déplacer vers la droite d'un caractère
Ctrl+ H- supprimer
Ctrl+ K- supprimer le reste du paragraphe actuel
Ctrl+ L- centrer la fenêtre sur le courant ligne
Ctrl+ N- descendre d'une ligne
Ctrl+ O- insérer une nouvelle ligne après le curseur
Ctrl+ P- remonter d'une ligne
Ctrl+ T- transposer (permuter) deux caractères environnants
Ctrl+ V- déplacer à la fin, puis gauche un caractère
Ctrl+ Y- coller le texte précédemment supprimé avecCtrl - K

Ajouter Optionà Ctrl+ Fou Ctrl+ Bpour déplacer un mot au lieu d'un caractère à la fois.

Chris
la source
Une autre bonne ressource est cette page hcs.harvard.edu/~jrus/Site/System%20Bindings.html
Gourneau
3
Ch supprime dans bash et dans les zones de texte Mac OS X Cocoa, mais cela aide dans emacs.
asmeurer
11

L'autre réponse était très complète, mais je mentionnerais en outre que je viens de définir la touche de verrouillage des majuscules sur une deuxième touche de contrôle au lieu de les échanger.

De plus, vous remarquerez que la grande majorité des champs de saisie de texte sous Mac OS X acceptent déjà les frappes emacs (^ A début de ligne, ^ E fin de ligne, ^ P, ^ N, ^ K, ^ Y, etc.)

bonne chance

mike511
la source
6
Vous êtes peut-être sur quelque chose - je ne me souviens pas de la dernière fois que j'ai utilisé le verrouillage des majuscules.
Kyle Cronin
11

J'aime vraiment la réponse fournie par Kyle Cronin, mais je veux ajouter une chose: assurez-vous de sélectionner le clavier approprié pour que cela fonctionne. Si vous avez un clavier externe branché sur votre ordinateur portable, il existe une liste déroulante supplémentaire et vous devrez le faire pour les deux claviers (ou au moins pour votre clavier externe). La capture d'écran ci-dessous montre la boîte de dialogue "Sélectionner le clavier" - J'ai sélectionné "Clavier Mac conjoint", qui est la manière de MacBook de dire le clavier externe GoldTouch - la valeur par défaut est le clavier intégré.
Capture d'écran montrant la boîte de dialogue "Sélectionner le clavier"

Une fois que j'ai compris cela, cela fonctionne très bien pour moi!

R.Klug
la source
9

Si vous utilisez emacs sur une connexion ssh, ou via une machine qui ne se trouve pas sur votre ordinateur local, les boutons page précédente / page suivante défilent dans la mémoire tampon du terminal - d'après mon expérience, ce n'est pas très utile.

Vous pouvez définir les boutons de page vers le bas et de page précédente pour envoyer les commandes appropriées à emacs. Dans emacs, vous pouvez faire défiler le tampon emacs comme ceci:

  • Page précédente: Ctl-v
  • Page suivante: Esc-v

Donc, pour que le terminal envoie ces commandes à emacs, suivez les instructions ci-dessus pour modifier les touches Alt pour Meta. Cependant, au lieu de définir l'option «utiliser l'option comme méta», recherchez les options «page suivante» et «page précédente».

Bas de page

Double-cliquez sur l'option «page suivante» pour la modifier. Remplacez Action par "envoyer la chaîne au shell" et entrez \ 026 comme chaîne. Sauvegarde le.

Haut de la page

Double-cliquez sur le bouton «Page précédente» pour le modifier. Remplacez Action par "envoyer la chaîne au shell" et entrez \ 033v comme chaîne. Sauvegarde le.


la source
7

Je ne sais pas si vous êtes totalement marié à l'utilisation d'Emacs depuis le terminal, mais une autre option consiste à utiliser Carbon Emacs (mon préféré) et Aquamacs (très similaire à Mac). Carbon Emacs utilise la touche de commande pour meta, c'est bien parce que vous pouvez faire des commandes Control-Meta simplement en maintenant Control et Command enfoncées au lieu d'appuyer d'abord sur échapper, puis sur la séquence de touches de contrôle.

De plus, si vous êtes un utilisateur sérieux d'Emacs, je vous recommande vivement de vous procurer un clavier adapté à la programmation (qui est complètement reprogrammable par lui-même). J'utilise un Kinesis, c'est un peu d'argent mais ils sont extrêmement durables et assez agréables.

dnolen
la source
4

Personnellement, j'ai configuré le verrouillage des majuscules pour se comporter comme une commande sur les préférences du système, puis sur mon fichier init.el emacs ont:

(setq mac-command-modifier 'ctrl)

et cela me permet d'utiliser le verrouillage des majuscules comme commande dans la plupart des applications osx et comme contrôle dans emacs. fonctionne assez bien pour moi.

Alexandre Paes
la source
4

Votre joie ne fait que commencer. D'autres astuces incluent:

  • Utilisez les touches Maj gauche et droite pour être également (et) pour une saisie rapide.
  • Remappez votre touche fn ou une autre clé pour qu'elle soit "super".
  • Contrôlez le verrouillage des majuscules, mais uniquement avec une autre clé En soi, c'est l'évasion.

Lisez l'excellent article sur http://stevelosh.com/blog/2012/10/a-modern-space-cadet/ pour plus d'informations.

Charles Merriam
la source
c'est tellement génial! THX! Je n'ai même pas pensé à faire cette logique conditionnelle pour le bouton de verrouillage des majuscules. si malade!
wle8300
3

Ce fil a été lancé il y a 5 ans et il n'y a aucune mention ns-win.elou construction --with-ns. Voici toutes les combinaisons de touches disponibles (prêtes à l'emploi) dans Emacs Trunk à partir d'octobre 2013. Et, bien sûr, vous pouvez créer les vôtres. Personnellement, j'en ai un init.elavec toutes mes raccourcis clavier qui peuvent être utilisés avec Windows XP via Parallels sur OSX, et aussi avec OSX nativement. Étant donné que l'utilisateur peut définir ses propres raccourcis clavier, je ne vois pas la nécessité de remapper le clavier dans les préférences système (avec un clavier Apple US) sauf sià l'aide d'un clavier qui n'inclut pas la touche Commande. Mais, est-ce que je jetterais ma réserve de claviers IBM Clicky avec Trackpoint intégré? Bien sûr que non. :) J'emporte mes claviers IBM Clicky avec moi dans la prochaine vie. Toute tension de la main est probablement causée par une mauvaise position du poignet / bras / coude, et non en frappant la commande par rapport au verrouillage des majuscules. La précision est améliorée grâce à la pratique et avec l'aide d'un patron qui regarde par-dessus votre épaule pour voir comment vous avancez - c'est-à-dire un peu de pression pour être plus productif :)

(define-key global-map [?\s-,] 'customize)
(define-key global-map [?\s-'] 'next-multiframe-window)
(define-key global-map [?\s-`] 'other-frame)
(define-key global-map [?\s-~] 'ns-prev-frame)
(define-key global-map [?\s--] 'center-line)
(define-key global-map [?\s-:] 'ispell)
(define-key global-map [?\s-?] 'info)
(define-key global-map [?\s-^] 'kill-some-buffers)
(define-key global-map [?\s-&] 'kill-this-buffer)
(define-key global-map [?\s-C] 'ns-popup-color-panel)
(define-key global-map [?\s-D] 'dired)
(define-key global-map [?\s-E] 'edit-abbrevs)
(define-key global-map [?\s-L] 'shell-command)
(define-key global-map [?\s-M] 'manual-entry)
(define-key global-map [?\s-S] 'ns-write-file-using-panel)
(define-key global-map [?\s-a] 'mark-whole-buffer)
(define-key global-map [?\s-c] 'ns-copy-including-secondary)
(define-key global-map [?\s-d] 'isearch-repeat-backward)
(define-key global-map [?\s-e] 'isearch-yank-kill)
(define-key global-map [?\s-f] 'isearch-forward)
(define-key global-map [?\s-g] 'isearch-repeat-forward)
(define-key global-map [?\s-h] 'ns-do-hide-emacs)
(define-key global-map [?\s-H] 'ns-do-hide-others)
(define-key global-map [?\s-j] 'exchange-point-and-mark)
(define-key global-map [?\s-k] 'kill-this-buffer)
(define-key global-map [?\s-l] 'goto-line)
(define-key global-map [?\s-m] 'iconify-frame)
(define-key global-map [?\s-n] 'make-frame)
(define-key global-map [?\s-o] 'ns-open-file-using-panel)
(define-key global-map [?\s-p] 'ns-print-buffer)
(define-key global-map [?\s-q] 'save-buffers-kill-emacs)
(define-key global-map [?\s-s] 'save-buffer)
(define-key global-map [?\s-t] 'ns-popup-font-panel)
(define-key global-map [?\s-u] 'revert-buffer)
(define-key global-map [?\s-v] 'yank)
(define-key global-map [?\s-w] 'delete-frame)
(define-key global-map [?\s-x] 'kill-region)
(define-key global-map [?\s-y] 'ns-paste-secondary)
(define-key global-map [?\s-z] 'undo)
(define-key global-map [?\s-|] 'shell-command-on-region)
(define-key global-map [s-kp-bar] 'shell-command-on-region)
;; (as in Terminal.app)
(define-key global-map [s-right] 'ns-next-frame)
(define-key global-map [s-left] 'ns-prev-frame)

(define-key global-map [home] 'beginning-of-buffer)
(define-key global-map [end] 'end-of-buffer)
(define-key global-map [kp-home] 'beginning-of-buffer)
(define-key global-map [kp-end] 'end-of-buffer)
(define-key global-map [kp-prior] 'scroll-down-command)
(define-key global-map [kp-next] 'scroll-up-command)

;; Allow shift-clicks to work similarly to under Nextstep.
(define-key global-map [S-mouse-1] 'mouse-save-then-kill)
(global-unset-key [S-down-mouse-1])
liste de lois
la source
2

(pas un clavier ergonomique, mais j'aime vraiment le déplacement et la sensation des touches, et la touche de contrôle, le verrouillage des majuscules sont permutés).

http://matias.ca/osxkeyboard/index.php

Gène T
la source
0

J'ai créé un ensemble assez complet de fixations ici pour une utilisation à l' extérieur du terminal.

Personnellement, je ne peux pas utiliser le clavier d'ordinateur portable mac en raison de l'absence de la bonne touche de contrôle.

Au lieu de cela, j'utilise le clavier Microsoft Natural Ergonomic Keyboard 4000 depuis plus de 7 ans: il a des touches Ctrl et Alt vraiment épaisses, bien positionnées, et après avoir téléchargé ses pilotes, les touches «Démarrer» et «Application» sont facilement remappées sur le Mac Touche Cmd, qui est également grasse et facilement enfoncée.

Pour éviter les problèmes d'ergonomie emacs, je me suis entraîné à utiliser Ctrl, Alt et Cmd de la même manière que nous utilisons Shift - en les appuyant avec la main opposée à celle qui tape la touche réelle. (Autrement dit, je laisse simplement le verrouillage des majuscules tel quel.)

aec
la source
0

J'ai défini le verrouillage des majuscules pour contrôler les préférences du système et j'ai ce qui suit dans mon init.el pour définir la commande sur meta et l'option sur super:

(custom-set-variables
 '(ns-alternate-modifier (quote super))
 '(ns-command-modifier (quote meta)))
Lester Cheung
la source
0

Je voudrais recommander 2 logiciels Seil et Karabiner . En installant simplement Seil et en suivant les instructions du logiciel, vous devriez pouvoir réaliser ce que vous voulez. D'après mon expérience, Karabiner est plus puissant. J'ai un clavier japonais dont la disposition est différente des normales. J'ai un extrait de code qui remappe deux touches supplémentaires de mon clavier en F18 et F19 pour une autre utilisation. Vous pouvez utiliser la même syntaxe pour éditer votre fichier "private.xml" pour faire plus de choses.

Minwei Shen
la source