Executando o emacs dentro da tela

4
  1. Eu tenho um arquivo screenrc, mas estou encontrando alguns conflitos quando executo o emacs dentro da tela. Por exemplo, movendo-se entre buffers no emacs, Ctrl-seta para a direita / seta para a esquerda, em vez de mover para frente envia alguns caracteres para os buffers, como 5C, 5D etc. Esse problema existe mesmo quando eu invoco a tela sem qualquer arquivo screenrc. Mas pelo menos os outros conflitos não estavam lá. Mas eu ficaria muito grato se alguém pudesse me dizer como consertar isso?

  2. Desde que eu tenho minhas próprias ligações no meu arquivo screenrc e eu quero continuar a usá-lo, então eu estava pensando que vou manter meu arquivo screenrc mas quando eu quero iniciar o emacs em uma nova tela, eu não vou use meu screenrc. Existe alguma maneira de invocar a tela para não usar o screenrc? Até agora eu tenho gerenciado renomeando meu arquivo screenrc para outra coisa quando inicio o emacs.

  3. Existe alguma maneira em que o próprio emacs pode funcionar como tela, como em estou usando a tela para que minha sessão do emacs não termine sempre que a sessão ssh remota cair. Eu encontrei alguma documentação sobre o cliente emacs e o servidor emacs, mas não consegui entender muito. Eu apreciaria se alguém pudesse dizer como salvar sessões dentro do emacs e restaurá-las para que eu não precisasse usar a tela para o emacs se fosse possível, pois em uma delas seria possível restaurar o processo do emacs novamente.

por pineapple 10.07.2011 / 15:18

4 respostas

9

Eu só tenho informações sobre sua pergunta # 3.

A partir do emacs 23, o emacs tem um modo daemon que, para mim, evitou a necessidade de executar o emacs dentro da tela. No meu primeiro login após uma inicialização, inicio emacs --daemon em um terminal. Isso inicia o emacs no plano de fundo. Então, sempre que eu precisar usar o emacs, eu executo emacsclient -nc para obter uma janela X para minha sessão do emacs, ou emacsclient -t para obter uma sessão de terminal.

Vários clientes podem coexistir alegremente. Eu rotineiramente executo um cliente X na minha tela de estação de trabalho no trabalho, um cliente X através de login ssh de casa e um cliente de terminal no meu telefone. Todos falando com o mesmo processo emacs, com todos os meus buffers e outros estados intactos. E se minha conexão ssh no meu telefone morrer, posso continuar de onde parei depois de fazer o login novamente.

Eu não sei o suficiente sobre as combinações de teclas na tela para ajudá-lo com suas duas primeiras perguntas.

    
por 10.07.2011 / 15:50
8

1) Isso tem a ver com a maneira como os interpets do Emacs escapam das seqüências enviadas pelo terminal. Isso é divertido! Você deve configurar seu mapa de entrada de decodificação , por exemplo, definindo o seguinte função no seu arquivo .emacs:

(defun terminal-init-screen ()
  "Terminal initialization function for GNU screen."
  (when (boundp 'input-decode-map)
    (define-key input-decode-map "^[[1;5C" [(control right)])
    (define-key input-decode-map "^[[1;5D" [(control left)])))

(Note que ^[ no exemplo acima é não um cursor seguido por um colchete de abertura, é um único caracter escape que você digita assim: < kbd> Cq ESC .)

Esta função é magicamente chamada pelo Emacs rodando dentro da tela.

2) Você pode chamar a tela com sua opção -c , para especificar um arquivo diferente do padrão .screenrc . Então, se você tem configurações especiais para tela que você só quer aplicar quando roda o Emacs dentro da tela, você pode colocá-las em um arquivo .emacs-screenrc e rodar o emacs dentro da tela da seguinte forma:

screen -c .emacs-screenrc emacs

Observe que esse arquivo pode estar vazio.

3) O gerenciamento de sessões no emacs às vezes pode ser tedioso. Na prateleira, o Emacs fornece modo de salvamento da área de trabalho que eu pessoalmente não use, mas eu li relatórios mistos sobre isso. Você pode querer experimentá-lo. Uma boa visão geral sobre abordagens alternativas pode ser encontrada no wiki do Emacs .

Uma alternativa ao gerenciamento de sessão, em primeiro lugar, é executar o Emacs como um servidor e conectar-se a ele com emacsclient . Eu não sei qual documentação você viu, mas a documentação oficial do GNU do Emacs é geralmente muito boa. Dê uma olhada:

link

    
por 10.07.2011 / 18:21
3

Para # 1

Tente invocar o emacs assim de dentro da tela:

TERM=xterm emacs -nw somefile

CTRL + arrow agora deve funcionar como desejado

    
por 20.05.2014 / 10:35
0

Outra maneira de fazer parte de 3) é usar o tramp: com o tramp você pode usar o Emacs rodando no seu computador para editar um arquivo no seu servidor. Apenas abra /ssh:user@host:/path/to/remote/file

Isso também pode ser usado para outro uso "remoto", por exemplo

  • /sudo::/etc/bla para edição usando sudo,
  • /ftp:user@host:/path/to/remote/file para editar o arquivo remoto usando ftp ...
O

tramp irá reabrir a conexão ssh quando necessário, e você pode até mesmo usar o tramp para rodar o programa no host remoto (coisas do VCS, por exemplo).

    
por 31.10.2011 / 09:32