Atalhos de teclado Emacs no Mac OS X Leopard

104

Sou um usuário Mac e decidi aprender Emacs. Eu tenho lido que para reduzir a tensão mão e melhorar a precisão do CTRLe CAPS LOCKchaves devem ser trocados. Como faço isso no Leopard?

Além disso, no Terminal, preciso usar a ESCchave para invocar meta. Existe alguma maneira de obter a tecla alt / opção para invocar meta em vez disso?

atualização: Embora a tecla de controle seja muito mais fácil de acertar agora, a tecla meta também é usada com freqüência suficiente para que sua posição no meu MacBook e teclado Apple também mereça atenção. Na verdade, acho que a tecla de controle é mais fácil de acertar, então remapei minha tecla de controle para funcionar como uma meta-chave. Alguém tem uma solução melhor / mais padrão?

Kyle Cronin
fonte
4
é melhor movê-lo para apple.stackexchange.com
yetanothercoder

Respostas:

163

Trocando CTRL e CAPS LOCK

  1. Entrar Preferências do Sistema
  2. Digite o teclado e o mouse painel de preferências de
  3. Na guia Teclado , clique em Teclas modificadoras ...
  4. Troque as ações para Caps Lock e Control .

texto alternativo

Usando ALT / OPTION como META

  1. Na barra de menu, clique em Terminal
  2. Clique em Preferências ...
  3. Na guia Configurações , vá para a guia Teclado
  4. Assinale a caixa com a etiqueta Usar opção como chave meta

texto alternativo

É isso aí! Você deve estar no caminho certo para se tornar um mestre do Emacs!

Kyle Cronin
fonte
8
'Usar opção como meta-chave' funciona, mas resulta em não ser capaz de digitar chaves e tubos '[] {} |' etc, uma vez que estão na opção 7 e opção agora ... bem, mapeia para meta. Alguma ideia?
Martin Wickman
1
@wic: Esses personagens não têm suas próprias chaves?
Kyle Cronin
1
Não aqui na Europa. Com um teclado norueguês, eles são mapeados para alt- 8 e 9 e alt + shift- 8 e 9.
sverrejoh
3
Mude o layout ao codificar. Em seguida, eles recebem suas próprias chaves como deveriam. Eu sou sueco e nunca acho a necessidade de digitar meus caracteres nativos durante a codificação.
Por Wiklander de
1
@hhh As configurações são por teclado, portanto, certifique-se de configurá-las corretamente para o teclado externo. Mas sim, depois de fazer a alteração, ela deve funcionar em qualquer lugar no OS X.
Kyle Cronin
47

Para referência, aqui estão os atalhos de teclado para mover o texto:

+ - mover para a esquerda uma palavra
+ - mover para a direita uma palavra
+ delete- voltar excluir uma palavra
Shift+ + delete- avançar excluir uma palavra
+ - mover para cima um parágrafo
+ - mover para baixo um parágrafo
+ - mover para o início da linha atual
+ - mover para o fim da linha atual
Shift + qualquer uma das opções acima estender a seleção pela quantidade apropriada

Clique e arraste - selecione o texto
Clique duas vezes e arraste - selecione o texto, ajustando para as extremidades das palavras
Clique três vezes e arraste - selecione o texto, ajustando para as extremidades do parágrafo

Shift+ Selecionar texto com o mouse - adicionar à seleção (contígua)
+ Selecionar texto com o mouse - adicionar à seleção (não contígua)
+ Arrastar - selecionar área retangular (não contígua)
+ + arrastar - adicionar área retangular à seleção
Arrastar seleção - mover texto
+ arrastar seleção - copiar texto

Ctrl+ A- mover para o início do parágrafo atual
Ctrl+ B- mover para a esquerda um caractere
Ctrl+ D- avançar excluir
Ctrl+ E- mover para o final do parágrafo atual
Ctrl+ F- mover para a direita um caractere
Ctrl+ H- excluir
Ctrl+ K- excluir o restante do parágrafo atual
Ctrl+ L- centralizar a janela no atual linha
Ctrl+ N- mover para baixo uma linha
Ctrl+ O- inserir nova linha após o cursor
Ctrl+ P- mover para cima uma linha
Ctrl+ T- transpor (trocar) dois caracteres circundantes
Ctrl+ V- mover para o fim, então um caractere para a esquerda
Ctrl+ Y- colar o texto excluído anteriormente comCtrl - K

Adicione Optiona Ctrl+ Fou Ctrl+ Bpara mover uma palavra em vez de um caractere por vez.

Chris
fonte
Outro bom recurso é esta página hcs.harvard.edu/~jrus/Site/System%20Bindings.html
Gourneau
3
Ch exclui no bash e nas caixas de texto Cocoa do Mac OS X, mas ajuda no emacs.
asmeurer em
11

A outra resposta foi muito completa, mas além disso, eu mencionaria que acabei de definir a tecla Caps Lock como uma segunda tecla de controle em vez de trocá-las.

Além disso, você notará que a grande maioria dos campos de entrada de texto no Mac OS X já aceita pressionamentos de tecla do emacs (^ Um início de linha, ^ E fim de linha, ^ P, ^ N, ^ K, ^ Y, etc)

boa sorte

mike511
fonte
6
Você pode estar no caminho certo - não me lembro da última vez que usei o caps lock.
Kyle Cronin,
11

Eu realmente gosto da resposta fornecida por Kyle Cronin, mas quero acrescentar uma coisa - certifique-se de selecionar o teclado apropriado para que isso funcione. Se você tiver um teclado externo conectado ao laptop, há uma caixa suspensa adicional e você precisará fazer isso para ambos os teclados (ou pelo menos para o teclado externo). A captura de tela abaixo mostra a caixa de diálogo "Selecionar teclado" - selecionei "Joint Mac Keyboard", que é a forma do MacBook de dizer teclado externo GoldTouch - o padrão é o teclado integrado.
Captura de tela mostrando a caixa de diálogo "Selecionar teclado"

Assim que descobri isso - funciona muito bem para mim!

R.Klug
fonte
9

Se você usa o emacs em uma conexão ssh, ou através de uma máquina que não está no seu computador local, os botões page up / page down rolam pelo buffer do terminal - na minha experiência, não é muito útil.

Você pode definir os botões page down e page up para enviar os comandos apropriados ao emacs. No emacs, você pode rolar pelo buffer do emacs assim:

  • Page Up: Ctl-v
  • Page Down: Esc-v

Portanto, para que o terminal envie esses comandos ao emacs, siga as instruções acima para alterar as teclas Alt para Meta. No entanto, em vez de definir a opção "usar opção como meta", encontre as opções "page down" e "page up".

Page Down

Clique duas vezes na opção "page down" para editá-lo. Altere Action para "enviar string para shell" e insira \ 026 como string. Salve isso.

Subir página

Clique duas vezes no botão "page up" para editá-lo. Altere Ação para "enviar string para shell" e insira \ 033v como string. Salve isso.


fonte
7

Não tenho certeza se você está totalmente casado com o uso do Emacs no terminal, mas outra opção é usar Carbon Emacs (meu favorito) e Aquamacs (muito parecido com o Mac). Carbon Emacs usa a tecla de comando para meta, isso é bom porque você pode fazer comandos Control-Meta apenas segurando Control e Command ao invés de primeiro apertar escape e depois a seqüência de teclas de controle.

Além disso, se você for um usuário sério do Emacs, eu recomendo totalmente que você obtenha um teclado adequado para programação (que é completamente reprogramável por si só). Eu uso um Kinesis, é um pouco caro, mas eles são extremamente duráveis ​​e muito bonitos.

dnolen
fonte
4

Pessoalmente, configurei o caps lock para se comportar como um comando nas preferências do sistema e, em seguida, no meu arquivo emacs init.el tenho:

(setq mac-command-modifier 'ctrl)

e isso me permite usar caps lock como comando na maioria dos aplicativos osx e como controle no emacs. funciona bem o suficiente para mim.

Alexandre Paes
fonte
4

Sua alegria está apenas começando. Outros truques incluem:

  • Use as teclas shift esquerda e direita para também ser (e) para digitação rápida.
  • Remapeie sua tecla fn ou outra tecla para ser "super".
  • Faça com que o caps lock seja o controle, mas apenas com outra tecla. Por si só, é uma fuga.

Leia o excelente artigo em http://stevelosh.com/blog/2012/10/a-modern-space-cadet/ para obter mais informações.

Charles Merriam
fonte
isso é tão incrível! THX! Nem pensei em fazer essa lógica condicional para o botão capslock. muito doente!
wle8300
3

Este tópico foi iniciado há 5 anos e não há menção ns-win.elou construção --with-ns. Aqui estão todos os atalhos de teclado disponíveis (prontos para uso) no Emacs Trunk em outubro de 2013. E, é claro, você pode criar o seu próprio. Pessoalmente, tenho um init.elcom todas as minhas combinações de teclas que podem ser usadas com o Windows XP através do Parallels no OSX e também com o OSX nativamente. Visto que o usuário pode definir seus próprios atalhos de teclado, não vejo necessidade de remapear o teclado nas preferências do sistema (com um teclado Apple US), a menos queusando um teclado que não inclui a tecla Command. Mas, eu jogaria fora meu estoque de teclados clicáveis ​​da IBM com trackpoint embutido? Claro que não. :) Estou levando meus teclados clicáveis ​​IBM comigo para a próxima vida. Qualquer tensão na mão é provavelmente causada por uma posição inadequada do punho / braço / cotovelo, e não por acertar o controle versus o caps lock. A precisão é melhorada com a prática e com a ajuda de um chefe olhando por cima do seu ombro para ver como você está indo - ou seja, um pouco de pressão para ser mais produtivo :)

(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 leis
fonte
2

(não é um teclado ergonômico, mas eu realmente gosto do deslocamento e toque das teclas, e a tecla Control, Caps Lock são trocadas).

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

Gene T
fonte
0

Criei um conjunto bastante abrangente de ligações aqui para uso fora do Terminal.

Pessoalmente, não consigo usar o teclado do laptop mac devido à ausência da tecla de controle certa.

Em vez disso, tenho usado o Microsoft Natural Ergonomic Keyboard 4000 por mais de 7 anos: ele tem as teclas Ctrl e Alt bem posicionadas e muito grossas e, depois de baixar seus drivers, as teclas "Iniciar" e "Aplicativo" são remapeadas trivialmente para o Mac Tecla Cmd, que também é grande e facilmente pressionada.

Para evitar as preocupações ergonômicas do emacs, treinei-me para usar Ctrl, Alt e Cmd da mesma forma que usamos Shift - pressionando-os com a mão oposta à que está digitando a tecla real. (Ou seja, deixo Caps Lock como está.)

aec
fonte
0

Defino o caps lock para controlar na preferência do sistema e tenho o seguinte em meu init.el para definir o comando como meta e a opção como super:

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

Gostaria de recomendar 2 softwares Seil e Karabiner . Simplesmente instalando Seil e seguindo as instruções do software, você poderá conseguir o que deseja. Pela minha experiência, o Karabiner é mais poderoso. Tenho um teclado japonês cujo layout é diferente dos normais. Eu tenho um trecho que remapeia duas teclas extras no meu teclado para F18 e F19 para outro uso. Você pode usar a mesma sintaxe para editar seu arquivo "private.xml" para fazer mais coisas.

Minwei Shen
fonte