Emacs en las combinaciones de teclas de Mac OS X Leopard

104

Soy un usuario de Mac y he decidido aprender Emacs. He leído que para reducir la tensión de la mano y mejorar la precisión, las teclas CTRLy CAPS LOCKdeben intercambiarse. ¿Cómo hago esto en Leopard?

Además, en Terminal tengo que usar la ESCclave para invocar meta. ¿Hay alguna forma de hacer que la tecla alt / opción invoque meta en su lugar?

actualización: Si bien la tecla de control es mucho más fácil de presionar ahora, la tecla meta también se usa con la frecuencia suficiente para que su posición en mi MacBook y Apple Keyboard también merezca atención. De hecho, encuentro que la tecla de control es más fácil de presionar, así que reasigné mi tecla de control para que actúe como una meta tecla. ¿Alguien tiene una solución mejor / más estándar?

Kyle Cronin
fuente
4
es mejor moverlo a para apple.stackexchange.com
yetanothercoder

Respuestas:

163

Intercambio de CTRL y BLOQ MAYÚS

  1. Vaya a Preferencias del sistema
  2. Ingrese al panel de preferencias de teclado y mouse
  3. En la pestaña Teclado , haga clic en Teclas modificadoras ...
  4. Cambie las acciones por Bloqueo de mayúsculas y Control .

texto alternativo

Usando ALT / OPTION como META

  1. En la barra de menú, haga clic en Terminal
  2. Haga clic en Preferencias ...
  3. En la pestaña Configuración , vaya a la pestaña Teclado
  4. Marque la casilla etiquetada Usar opción como meta clave

texto alternativo

¡Eso es! ¡Debería estar en camino de convertirse en un maestro de Emacs!

Kyle Cronin
fuente
8
'Usar opción como meta clave' funciona, pero esto hace que no pueda escribir llaves y tuberías '[] {} |' etc ya que están en la Opción-7 y la opción ahora ... bien se asigna a meta. ¿Algunas ideas?
Martin Wickman
1
@wic: ¿Esos personajes no tienen sus propias claves?
Kyle Cronin
1
No aquí en Europa. Con un teclado noruego, se asignan a alt- 8 y 9 y alt + shift- 8 y 9.
sverrejoh
3
Cambie el diseño al codificar. Luego obtienen sus propias llaves como deberían. Soy sueco y nunca encuentro la necesidad de escribir mis caracteres nativos mientras codifico.
Según Wiklander
1
@hhh La configuración es por teclado, así que asegúrese de haberla configurado correctamente para su teclado externo. Pero sí, una vez que realice el cambio, debería funcionar en todas partes en OS X.
Kyle Cronin
47

Como referencia, aquí están las combinaciones de teclas para moverse por el texto:

+ - mover a la izquierda una palabra
+ - mover a la derecha una palabra
+ delete- atrás borrar una palabra
Shift+ + delete- adelante borrar una palabra
+ - subir un párrafo
+ - bajar un párrafo
+ - mover al inicio de la línea actual
+ - mover al final de la línea actual
Shift+ cualquiera de las opciones anteriores extender la selección por la cantidad adecuada

Hacer clic y luego arrastrar - seleccionar texto
Hacer doble clic y luego arrastrar - seleccionar texto, ajustar hasta el final de la palabra Hacer
triple clic y luego arrastrar - seleccionar texto, ajustar al final de párrafo

Shift+ Seleccionar texto con el mouse - agregar a la selección (contiguo)
+ Seleccionar texto con el mouse - agregar a la selección (no contiguo)
+ Arrastrar - seleccionar área rectangular (no contigua)
+ + arrastrar - agregar área rectangular a la selección
Arrastrar selección - mover texto
+ arrastrar selección - copiar texto

Ctrl+ A- Desplazarse al principio del párrafo actual
Ctrl+ B- mover a la izquierda un carácter
Ctrl+ D- delanteros de eliminación
Ctrl+ E- mover al final del párrafo actual
Ctrl+ F- mover un carácter a la derecha
Ctrl+ H- Eliminar
Ctrl+ K- resto de eliminación del párrafo actual
Ctrl+ L- centro de la ventana de la corriente línea
Ctrl+ N- mover una línea hacia abajo
Ctrl+ O- insertar una nueva línea después del cursor
Ctrl+ P- mover una línea hacia arriba
Ctrl+ T- transponer (intercambiar) dos caracteres circundantes
Ctrl+ V- mover al final, luego dejar un carácter
Ctrl+ Y- pegar el texto previamente eliminado conCtrl - K

Agregue Optiona Ctrl+ Fo Ctrl+ Bpara mover una palabra en lugar de un carácter a la vez.

Chris
fuente
Otro buen recurso es esta página hcs.harvard.edu/~jrus/Site/System%20Bindings.html
Gourneau
3
Ch elimina en bash y en los cuadros de texto Cocoa de Mac OS X, pero ayuda en emacs.
asmeurer
11

La otra respuesta fue muy completa, pero además mencionaría que simplemente configuré la tecla de bloqueo de mayúsculas en una segunda tecla de control en lugar de cambiarlas.

Además, notará que la gran mayoría de los campos de entrada de texto en Mac OS X ya aceptan las pulsaciones de teclas de emacs (^ A principio de línea, ^ E final de línea, ^ P, ^ N, ^ K, ^ Y, etc.)

buena suerte

mike511
fuente
6
Puede que estés en algo. No recuerdo la última vez que utilicé el bloqueo de mayúsculas.
Kyle Cronin
11

Realmente me gusta la respuesta proporcionada por Kyle Cronin, pero quiero agregar una cosa: asegúrese de seleccionar el teclado apropiado para que esto funcione. Si tiene un teclado externo conectado a su computadora portátil, entonces hay un cuadro desplegable adicional y deberá hacer esto para ambos teclados (o al menos para su teclado externo). La captura de pantalla a continuación muestra el cuadro de diálogo "Seleccionar teclado". He seleccionado "Teclado conjunto de Mac", que es la forma en que MacBook dice teclado externo GoldTouch; el predeterminado es el teclado integrado.
Captura de pantalla que muestra el cuadro de diálogo "Seleccionar teclado"

Una vez que me di cuenta de eso, ¡esto funciona muy bien para mí!

R.Klug
fuente
9

Si usa emacs a través de una conexión ssh, oa través de una máquina que no está en su computadora local, los botones de avance / retroceso de página se desplazan a través del búfer del terminal; en mi experiencia, no es muy útil.

Puede configurar los botones de página hacia abajo y hacia arriba para enviar los comandos apropiados a emacs. En emacs, puede desplazarse por el búfer de emacs así:

  • Retroceder página: Ctl-v
  • Página abajo: Esc-v

Entonces, para que la terminal envíe estos comandos a emacs, siga las instrucciones anteriores para modificar las teclas Alt para Meta. Sin embargo, en lugar de establecer la opción "usar opción como meta", busque las opciones "página hacia abajo" y "página hacia arriba".

Página abajo

Haga doble clic en la opción "página abajo" para editarla. Cambie Acción a "enviar cadena al shell" e ingrese \ 026 como cadena. Guárdalo.

Página arriba

Haga doble clic en el botón "subir página" para editarlo. Cambie Acción a "enviar cadena al shell" e ingrese \ 033v como cadena. Guárdalo.


fuente
7

No estoy seguro si estás totalmente casado con usar Emacs desde la terminal, pero otra opción es usar Carbon Emacs (mi favorito) y Aquamacs (muy parecido a Mac). Carbon Emacs usa la tecla de comando para meta, esto es bueno porque puede hacer comandos Control-Meta simplemente manteniendo presionados Control y Comando en lugar de presionar primero escape y luego la secuencia de teclas de control.

Además, si usted es un usuario serio de Emacs, le recomiendo que obtenga un teclado adecuado para la programación (que sea completamente reprogramable por sí mismo). Yo uso una Kinesis, cuesta un poco de dinero pero son extremadamente duraderas y bastante bonitas.

dnolen
fuente
4

Personalmente, configuré el bloqueo de mayúsculas para que se comporte como un comando en las preferencias del sistema y luego en mi archivo emacs init.el tengo:

(setq mac-command-modifier 'ctrl)

y esto me permite usar el bloqueo de mayúsculas como comando en la mayoría de las aplicaciones osx y como control en emacs. funciona bastante bien para mí.

Alexandre Paes
fuente
4

Tu alegría apenas comienza. Otros trucos incluyen:

  • Use las teclas de mayúsculas izquierda y derecha para también ser (y) para escribir rápido.
  • Vuelva a asignar su tecla fn u otra tecla para que sea "super".
  • Haga que el bloqueo de mayúsculas sea el control, pero solo con otra tecla. Por sí mismo, es un escape.

Lea el excelente artículo en http://stevelosh.com/blog/2012/10/a-modern-space-cadet/ para obtener mucha más información.

Charles Merriam
fuente
¡esto es tan asombroso! ¡Gracias! Ni siquiera pensé en hacer esa lógica condicional para el botón de bloqueo de mayúsculas. ¡tan enfermo!
wle8300
3

Este hilo se inició hace 5 años y no se menciona ns-win.elni se construye --with-ns. Aquí están todas las combinaciones de teclas disponibles (listas para usar) en Emacs Trunk a partir de octubre de 2013. Y, por supuesto, puede crear las suyas propias. Personalmente, tengo uno init.elcon todas mis combinaciones de teclas que se puede usar con Windows XP a través de Parallels en OSX, y también con OSX de forma nativa. Dado que el usuario puede definir sus propios atajos de teclado, no veo la necesidad de reasignar el teclado en las preferencias del sistema (con un teclado de Apple para EE. UU.) A menos queutilizando un teclado que no incluye la tecla Comando. Pero, ¿tiraría mi alijo de teclados IBM Clicky con trackpoint integrado? Por supuesto no. :) Me llevaré mis teclados IBM Clicky conmigo a la próxima vida. Es muy probable que cualquier tensión en la mano sea causada por una posición incorrecta de la muñeca / brazo / codo, no por presionar control versus bloqueo de mayúsculas. La precisión se mejora con la práctica y con la ayuda de un jefe que mira por encima del hombro para ver cómo va, es decir, un poco de presión para ser más productivo :)

(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])
lista de abogados
fuente
0

He creado un conjunto bastante completo de enlaces aquí para usar fuera de Terminal.

Personalmente, no puedo usar el teclado de la computadora portátil Mac debido a la ausencia de la tecla de control correcta.

En su lugar, he estado usando Microsoft Natural Ergonomic Keyboard 4000 durante más de 7 años: tiene teclas Ctrl y Alt realmente gruesas y bien ubicadas, y después de descargar sus controladores , las teclas "Inicio" y "Aplicación" se reasignan trivialmente a la Mac. Cmd key, que también es gorda y se presiona fácilmente.

Para evitar preocupaciones ergonómicas de emacs, me he entrenado para usar Ctrl, Alt y Cmd de la misma manera que usamos Shift: presionándolos con la mano opuesta a la que está escribiendo la tecla real. (Es decir, dejo el Bloqueo de mayúsculas como está).

aec
fuente
0

Configuré el bloqueo de mayúsculas para controlar en las preferencias del sistema y tengo lo siguiente en mi init.el para configurar el comando en meta y la opción en super:

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

Me gustaría recomendar 2 softwares Seil y Karabiner . Simplemente instalando Seil y siguiendo las instrucciones del software, debería poder lograr lo que desea. Desde mi experiencia, Karabiner es más poderoso. Tengo un teclado japonés cuya distribución es diferente a la normal. Tengo un fragmento que reasigna dos teclas adicionales en mi teclado a F18 y F19 para otro uso. Puede usar la misma sintaxis para editar su archivo "private.xml" para hacer más cosas.

Minwei Shen
fuente