Não consigo usar o atalho de teclado ctrl + alt + enter no matlab rodando no emacs rodando na tela

2

Na minha configuração usual, uso o matlab-emacs para executar o Matlab através do emacs gui. Eu executo o matlab e o emacs em um servidor linux, e uso o ssh e o X forwarding, então tudo isso aparece no meu laptop ubuntu local.

Eu gostaria de complicar ainda mais essa configuração executando o emacs na tela. Isso funciona principalmente com a notável exceção de que o atalho de teclado Ctrl + Alt + Enter que informa ao Matlab para executar um bloco de código, não parece fazer qualquer coisa. Eu presumo que este atalho está sendo enviado talvez em algum lugar localmente em minha própria máquina? Percebo que a barra de menu na parte superior do meu terminal no meu laptop muda quando tento executar esse comando.

Alguém tem uma sugestão inteligente de como eu posso ter Ctrl + Alt + Enter para executar os blocos de código do Matlab como esperado? Obrigado!

    
por ohnoplus 26.08.2015 / 01:38

1 resposta

2

Terminais transmitem caracteres¹, não chaves. Quando você pressiona uma tecla ou combinação de teclas como Ctrl + Alt + Enter , o terminal deve traduzi-lo para uma sequência de caractere ou caractere. Não há caracteres suficientes para representar todas as chaves, então a maioria dessas combinações são transmitidas como seqüências de escape: uma sequência de caracteres que começa com o caractere de escape.

Não há um padrão universal para as seqüências de escape, embora existam algumas convenções comuns. Por exemplo, a tecla Alt + chave envia freqüentemente o caractere de escape seguido pelo caractere ou seqüência de escape para a tecla ; mas não existe um padrão para o que Ctrl + Enter envia. Alguns terminais são configuráveis, alguns têm sequências de escape codificadas.

Veja também Problemas com atalhos de teclado ao usar terminal para uma explicação mais detalhada, bem como possíveis soluções com o Xterm.

Se você não conseguir usar Ctrl + Alt + Introduzir para ser transmitido através do seu terminal favorito, você pode escolher uma ligação de teclas diferente . Descobrir o comando Ctrl + Alt + Enter executado pressionando C-h c C-M-return quando estiver usando o Matlab em um GUI Emacs. Em seguida, digite C-h w matlab-foo RET em que matlab-foo é o nome do comando; isso lhe dirá a que chave (s) matlab-foo está vinculada. Se não houver uma ligação que você possa digitar convenientemente, adicione uma ao seu arquivo init, com algo como

(defun my-eval-after-load-matlab ()
  (define-key matlab-mode-map [f9] 'matlab-foo))
(eval-after-load "matlab" '(my-eval-after-load-matlab))

Para "matlab" , substitua o nome do arquivo Lisp que define o comando matlab-foo . Para descobrir o que é isso, digite C-h k C-M-return ; isto diz-lhe algo como "C-M-return executa o comando matlab-foo, que é uma função Lisp compilada interativa em 'matlab.el'". O nome do arquivo Lisp é o último bit na linha, menos a parte .el . Para matlab-mode-map , substitua o nome do mapa de chaves; esse é geralmente o nome do modo principal ( C-h v major-mode RET , "Seu valor é matlab-mode") mais -map no final.

Alternativamente, você realmente precisa usar o Screen? Se você estiver usando apenas para que o Emacs sobreviva à desconexão, isso não é realmente necessário. Inicie o Emacs como um daemon ( emacs --daemon ) e conecte-se a ele remotamente por meio do SSH executando emacsclient -c para abrir um novo quadro da GUI. Você pode abrir e fechar quadros da GUI em vários monitores, e o Emacs continuará funcionando mesmo se os monitores entrarem e saírem.

¹ Na verdade, bytes, mas esse bit é irrelevante aqui.

    
por 26.08.2015 / 02:46