web-dev-qa-db-fra.com

Emacs sur les raccourcis clavier de Mac OS X Leopard

Je suis un utilisateur Mac et j'ai décidé d'apprendre Emacs. J'ai lire cela pour réduire la fatigue de la main et améliorer la précision du CTRL et CAPS LOCK les clés doivent être échangées. Comment faire cela dans Leopard?

De plus, dans le terminal, je dois utiliser le ESC pour appeler la méta. Existe-t-il un moyen d'obtenir la touche alt/option pour appeler la méta à la place?

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

103
Kyle Cronin

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

 +  - déplacer un mot vers la gauche
 +  - déplacer un mot vers la droite
 + delete - retour supprimer un mot
Shift +  + delete - foward supprimer un mot
 +  - remonter d'un paragraphe
 +  - descendre d'un paragraphe
 +  - passer au début de la ligne actuelle
 +  - passer à la fin de la ligne actuelle
Shift + n'importe laquelle des options ci-dessus, étendre la sélection d'un montant approprié

Cliquez puis faites glisser - sélectionnez le texte
Double-cliquez puis faites glisser - sélectionnez le texte, retour à la fin de Word
Cliquez trois fois puis faites glisser - sélectionnez le texte, retour à la fin du paragraphe

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ë)
 +  + glisser - ajouter une zone rectangulaire à la sélection
Faire glisser la sélection - déplacer le texte
 + faire glisser la sélection - copier le texte

Ctrl + A - passer au début du paragraphe actuel
Ctrl + B - déplacer un caractère vers la gauche
Ctrl + D - supprimer avant
Ctrl + E - passer à la fin du paragraphe actuel
Ctrl + F - déplacer à droite d'un caractère
Ctrl + H - supprimer
Ctrl + K - supprimer le reste du paragraphe actuel
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 (échanger) deux personnages environnants
Ctrl + V - aller jusqu'à la fin, puis laisser un caractère
Ctrl + Y - coller du texte précédemment supprimé avec Ctrl - K

45
Chris

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

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

bonne chance

11
mike511

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 y a 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é "Joint Mac Keyboard", qui est la façon dont MacBook dit le clavier externe GoldTouch - la valeur par défaut est le clavier intégré.
Screen shot showing "Select Keyboard" dialog

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

11
R.Klug

Si vous utilisez emacs via une connexion ssh, ou via une machine qui n'est pas sur votre ordinateur local, les boutons de page haut/page bas font défiler la mémoire tampon du terminal - d'après mon expérience, ce n'est pas très utile.

Vous pouvez paramétrer votre page vers le bas et les boutons de page vers le haut 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 de 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".

Page suivante

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

Page précédente

Double-cliquez sur le bouton "page précédente" pour le modifier. Remplacez Action par "envoyer une chaîne à Shell" et entrez \ 033v comme chaîne. Sauvegarde le.

9
Tony Wieczorek

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 la méta, 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 escape 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 (c'est-à-dire qui est entièrement reprogrammable par lui-même). J'utilise une Kinesis, c'est un peu d'argent mais ils sont extrêmement résistants et assez sympas.

7
dnolen

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

(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.

4
Alexandre Paes

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

  • Utilisez les touches Maj gauche et droite pour être également (et) pour une saisie rapide.
  • Remappez votre touche fn ou une autre touche pour qu'elle soit "super".
  • Faites en sorte que le verrouillage des majuscules soit contrôlé, 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 beaucoup plus d'informations.

4
Charles Merriam

Ce fil a été lancé il y a 5 ans et il n'est pas fait mention de ns-win.el ou construire --with-ns. Voici toutes les raccourcis clavier disponibles (prêts à 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.el avec toutes mes raccourcis clavier utilisables avec Windows XP via Parallels sous OSX, et aussi avec OSX en natif. Puisque l'utilisateur peut définir ses propres raccourcis clavier, je ne vois pas un besoin de remapper le clavier dans les préférences système (avec un Apple clavier américain) sauf en utilisant un clavier qui n'inclut pas la touche Commande. Mais, est-ce que je jetterais ma réserve de claviers clicky IBM avec trackpoint intégré? Bien sûr que non. :) J'emmène mes claviers clicky IBM avec moi dans la prochaine vie. Toute fatigue de la main est très probablement causée par une mauvaise position du poignet/bras/coude, pas par Frapper le contrôle contre le 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 vous en sortez - 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])
3
lawlist

(pas un clavier ergonomique, mais j'aime vraiment le voyage et la sensation des touches, et la touche Contrôle, le verrouillage des majuscules sont échangés).

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

2
Gene T

J'ai défini le verrouillage des majuscules pour contrôler dans les préférences 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)))
0
Lester Cheung

J'ai créé un ensemble assez complet de liaisons ici pour une utilisation en dehors de 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 Microsoft Natural Ergonomic Keyboard 40 depuis plus de 7 ans: il a des touches Ctrl et Alt vraiment grosses et bien positionnées, et après téléchargement de ses pilotes le Les touches "Démarrer" et "Application" sont trivialement remappées à la clé Mac 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 tapant la touche réelle. (Autrement dit, je laisse simplement le verrouillage des majuscules tel quel.)

0
aec

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 de celle des claviers normaux. J'ai un extrait qui remappe deux touches supplémentaires sur mon clavier en F18 et F19 pour une autre utilisation. Vous pouvez utiliser la même syntaxe pour modifier votre fichier "private.xml" pour faire plus de choses.

0
Minwei Shen