Emacs su associazioni di tasti Mac OS X Leopard


104

Sono un utente Mac e ho deciso di imparare Emacs. Ho letto che per ridurre lo sforzo della mano e migliorare la precisione, i tasti CTRLe CAPS LOCKdovrebbero essere scambiati. Come si esegue questa operazione in Leopard?

Inoltre, in Terminal devo usare la ESCchiave per invocare meta. C'è un modo per ottenere il tasto alt / option per invocare invece meta?

aggiornamento: mentre il tasto di controllo è molto più facile da premere ora, anche il tasto meta viene utilizzato abbastanza spesso che anche la sua posizione sul mio MacBook e sulla tastiera Apple merita attenzione. In effetti, trovo che il tasto di controllo sia effettivamente più facile da premere, quindi ho rimappato il mio tasto di controllo in modo che funga da meta chiave. Qualcuno ha una soluzione migliore / più standard?


4
è meglio spostarlo su apple.stackexchange.com
yetanothercoder

Risposte:


163

Scambio di CTRL e BLOC MAIUSC

  1. Vai in Preferenze di Sistema
  2. Accedi al pannello delle preferenze Tastiera e mouse
  3. Nella scheda Tastiera , fai clic su Tasti modificatori ...
  4. Scambia le azioni per Caps Lock e Control .

testo alternativo

Utilizzo di ALT / OPTION come META

  1. Nella barra dei menu, fai clic su Terminale
  2. Fare clic su Preferenze ...
  3. Nella scheda Impostazioni , vai alla scheda Tastiera
  4. Seleziona la casella con l'etichetta Usa opzione come meta chiave

testo alternativo

Questo è tutto! Dovresti essere sulla buona strada per diventare un maestro di Emacs!


8
"Usa opzione come meta chiave" funziona, ma questo mi impedisce di digitare parentesi graffe e barre verticali "[] {} |" ecc dato che sono su Option-7 e option now ... beh, mappato a meta. Qualche idea?
Martin Wickman

1
@wic: quei personaggi non hanno le loro chiavi?
Kyle Cronin

1
Non qui in Europa. Con una tastiera norvegese sono mappati su alt- 8 e 9 e alt + maiusc- 8 e 9.
sverrejoh

3
Cambia layout durante la codifica. Quindi ottengono le proprie chiavi come dovrebbero. Sono svedese e non trovo mai la necessità di digitare i miei caratteri nativi durante la codifica.
Per Wiklander,

1
@hhh Le impostazioni sono per tastiera, quindi assicurati di averle impostate correttamente per la tua tastiera esterna. Ma sì, una volta apportata la modifica, dovrebbe funzionare ovunque in OS X.
Kyle Cronin

47

Per riferimento, ecco le associazioni di tasti, per spostarsi nel testo:

+ - sposta a sinistra di una parola
+ - sposta a destra di una parola
+ delete- indietro elimina una parola
Shift+ + delete- avanti elimina una parola
+ - sposta in alto di un paragrafo
+ - sposta in basso di un paragrafo
+ - sposta all'inizio della riga corrente
+ - sposta alla fine della riga corrente
Shift+ una delle opzioni precedenti estende la selezione di un importo appropriato

Fare clic e trascinare: selezionare il testo
Fare doppio clic e trascinare: selezionare il testo, avvolgere le estremità della parola
Fare triplo clic e trascinare: selezionare il testo, avvolgere le estremità del paragrafo

Shift+ Seleziona testo con il mouse - aggiungi alla selezione (contiguo)
+ Seleziona testo con il mouse - aggiungi alla selezione (non contiguo)
+ Trascina - seleziona area rettangolare (non contigua)
+ + trascina - aggiungi area rettangolare alla selezione
Trascina selezione - sposta testo
+ trascina selezione - copia testo

Ctrl+ A- sposta all'inizio del paragrafo corrente
Ctrl+ B- sposta a sinistra di un carattere
Ctrl+ D- cancella in avanti
Ctrl+ E- sposta alla fine del paragrafo corrente
Ctrl+ F- sposta a destra di un carattere
Ctrl+ H- elimina
Ctrl+ K- elimina il resto del paragrafo corrente
Ctrl+ L- centra la finestra sul corrente riga
Ctrl+ N- sposta in basso di una riga
Ctrl+ O- inserisci una nuova riga dopo il cursore
Ctrl+ P- sposta in alto di una riga
Ctrl+ T- trasponi (scambia) due caratteri circostanti
Ctrl+ V- sposta alla fine, quindi a sinistra di un carattere
Ctrl+ Y- incolla il testo precedentemente eliminato conCtrl - K

Aggiungi Optiona Ctrl+ Fo Ctrl+ Bper spostare una parola invece di un carattere alla volta.


Un'altra buona risorsa è questa pagina hcs.harvard.edu/~jrus/Site/System%20Bindings.html
Gourneau

3
Ch elimina in bash e in Mac OS X le caselle di testo Cocoa, ma aiuta in emacs.
asmeurer

11

L'altra risposta è stata molto completa, ma in aggiunta vorrei menzionare che ho semplicemente impostato il tasto BLOC MAIUSC su un secondo tasto di controllo invece di scambiarli.

Inoltre, noterai che la grande maggioranza dei campi di immissione del testo in Mac OS X accetta già i tasti di emacs (^ A inizio riga, ^ E fine riga, ^ P, ^ N, ^ K, ^ Y, ecc.)

in bocca al lupo


6
Potresti avere qualcosa - non ricordo l'ultima volta che ho usato il blocco maiuscole.
Kyle Cronin

11

Mi piace molto la risposta fornita da Kyle Cronin, ma voglio aggiungere una cosa: assicurati di selezionare la tastiera appropriata affinché funzioni. Se hai una tastiera esterna collegata al tuo laptop, è presente una casella a discesa aggiuntiva e dovrai farlo per entrambe le tastiere (o almeno per la tua tastiera esterna). La schermata qui sotto mostra la finestra di dialogo "Seleziona tastiera": ho selezionato "Tastiera Mac congiunta", che è il modo in cui MacBook dice la tastiera esterna GoldTouch - l'impostazione predefinita è la tastiera incorporata.
Schermata che mostra la finestra di dialogo "Seleziona tastiera"

Una volta capito, funziona benissimo per me!


9

Se usi emacs su una connessione ssh, o attraverso una macchina non sul tuo computer locale, i pulsanti pagina su / pagina giù scorrono attraverso il buffer del terminale - nella mia esperienza, non troppo utile.

Puoi impostare i pulsanti pagina giù e pagina su per inviare i comandi appropriati a emacs. In emacs, puoi scorrere il buffer di emacs in questo modo:

  • Pagina su: Ctl-v
  • Pagina giù: Esc-v

Quindi, per fare in modo che il terminale invii questi comandi a emacs, segui le istruzioni sopra per modificare i tasti Alt per Meta. Tuttavia, invece di impostare l'opzione "usa l'opzione come meta", trova le opzioni "pagina giù" e "pagina su".

Pagina giù

Fare doppio clic sull'opzione "pagina giù" per modificarla. Modificare l' azione in "invia stringa alla shell" e immettere \ 026 come stringa. Salvarla.

Pagina su

Fare doppio clic sul pulsante "pagina su" per modificarlo. Modificare l' azione in "invia stringa alla shell" e immettere \ 033v come stringa. Salvarla.


7

Non sono sicuro se sei totalmente sposato con l'utilizzo di Emacs dal terminale, ma un'altra opzione è usare Carbon Emacs (il mio preferito) e Aquamacs (molto simile a Mac). Carbon Emacs usa il tasto command per meta, questo è utile perché puoi eseguire comandi Control-Meta semplicemente tenendo premuti Control e Command invece di premere prima Esc e poi la sequenza di tasti control.

Inoltre, se sei un utente serio di Emacs, ti consiglio vivamente di procurarti una tastiera adatta alla programmazione (che è completamente riprogrammabile da sola). Io uso un Kinesis, è un po 'di soldi ma sono estremamente resistenti e abbastanza belli.


4

Personalmente ho impostato il blocco maiuscole per comportarmi come un comando nelle preferenze di sistema e quindi sul mio file emacs init.el avere:

(setq mac-command-modifier 'ctrl)

e questo mi permette di usare il blocco maiuscole come comando nella maggior parte delle applicazioni osx e come controllo in emacs. funziona abbastanza bene per me.


4

La tua gioia è solo all'inizio. Altri trucchi includono:

  • Usa i tasti Maiusc sinistro e destro per essere anche (e) per la digitazione veloce.
  • Rimappa il tasto FN o un altro tasto per essere "super".
  • Rendi il blocco maiuscole il controllo, ma solo con un'altra chiave. Di per sé, è una fuga.

Leggi l'eccellente articolo su http://stevelosh.com/blog/2012/10/a-modern-space-cadet/ per molte più informazioni.


è così fantastico! grazie! Non ho nemmeno pensato di fare quella logica condizionale per il pulsante capslock. così malato!
wle8300

3

Questo thread è stato avviato 5 anni fa e non vi è alcuna menzione ns-win.elo build --with-ns. Ecco tutte le associazioni di tasti disponibili (pronte all'uso) in Emacs Trunk a partire da ottobre 2013. E, naturalmente, puoi crearne di tue. Personalmente, ne ho uno init.elcon tutte le mie associazioni di tasti che possono essere utilizzate con Windows XP tramite Parallels su OSX e anche con OSX nativamente. Poiché l'utente può definire le proprie scorciatoie da tastiera, non vedo la necessità di rimappare la tastiera nelle preferenze di sistema (con una tastiera Apple US) a meno cheutilizzando una tastiera che non include il tasto Comando. Ma dovrei buttare via la mia scorta di tastiere cliccabili IBM con trackpoint integrato? Ovviamente no. :) Porto con me le mie tastiere IBM nella prossima vita. Qualsiasi sforzo alla mano è molto probabilmente causato da una posizione impropria del polso / braccio / gomito, non dal controllo del controllo rispetto al blocco delle maiuscole. La precisione viene migliorata con la pratica e con l'aiuto di un capo che guarda alle tue spalle per vedere come stai andando, cioè un po 'di pressione per essere più produttivo :)

(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])


0

Ho creato un insieme abbastanza completo di associazioni qui per l'utilizzo al di fuori di Terminal.

Personalmente, non posso usare la tastiera del laptop Mac a causa dell'assenza del tasto di controllo giusto.

Invece, utilizzo la Microsoft Natural Ergonomic Keyboard 4000 da oltre 7 anni: ha i tasti Ctrl e Alt davvero grossi e ben posizionati, e dopo aver scaricato i suoi driver i tasti "Start" e "Applicazione" vengono rimappati banalmente sul Mac Tasto Cmd, anch'esso grasso e facilmente deprimente.

Per evitare preoccupazioni ergonomiche di emacs mi sono allenato a usare Ctrl, Alt e Cmd nello stesso modo in cui usiamo Shift - premendoli con la mano opposta a quella che digita il tasto effettivo. (Cioè, lascio maiuscole così com'è.)


0

Ho impostato il blocco maiuscole per il controllo nelle preferenze di sistema e ho quanto segue nel mio init.el per impostare il comando su meta e l'opzione su super:

(custom-set-variables
 '(ns-alternate-modifier (quote super))
 '(ns-command-modifier (quote meta)))

0

Vorrei raccomandare 2 software Seil e Karabiner . Semplicemente installando Seil e seguendo le istruzioni nel software, dovresti essere in grado di ottenere ciò che desideri. Dalla mia esperienza, Karabiner è più potente. Ho una tastiera giapponese il cui layout è diverso da quelli normali. Ho un frammento che rimappa due tasti extra sulla mia tastiera in F18 e F19 per altri usi. Puoi usare la stessa sintassi per modificare il tuo file "private.xml" per fare più cose.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.