2010-06-05 13 views
11

Non riesco a copiare il testo in un terminale in esecuzione in Emacs.Yanking di testo in un terminale in esecuzione in Emacs

Questa è la mia procedura:

ho ucciso la stringa "data" da un buffer e strappò nel terminale in un altro buffer e premete Invio.

Il terminale si comporta come se non avessi digitato nulla. Restituisce solo il prompt indietro.

Sto usando OS X 10.5.8 e Emacs 23.1. Ho provato questa procedura su Aquamacs, Carbon Emacs e il rilascio da http://emacsformacosx.com/. Tutti mostrano questo comportamento strano anche nelle loro configurazioni predefinite con il mio file .emacs vuoto. Cosa potrebbe causare questo?

risposta

14

Con "in a terminal" presumo che tu intenda che stai utilizzando l'emulatore di terminale integrato di Emacs. Normalmente, l'emulatore di terminale trasmette la maggior parte delle chiavi esattamente come digitate nel processo shell. Digitare C-c C-j nel buffer del terminale per metterlo in uno stato in cui sono disponibili i normali binding di chiavi Emacs. Vedrai il cambio di riga della modalità da (Term: char run) a (Term: line run).

Addendum:

testo Yanking senza uscire dalla modalità char è un po 'difficile; la funzione rilevante, tuttavia, è term-paste (non yank, che semplicemente inserisce il testo nel buffer del terminale senza inviarlo al processo inferiore). term-paste invierà immediatamente il kill più recente al processo inferiore, ma non fornisce la fantasiosa funzionalità di yank a cui probabilmente sei abituato (come M-y per passare in rassegna le uccisioni precedenti). È possibile eseguire term-paste come comando esteso: C-c M-x term-paste RET.

Probabilmente la soluzione più semplice è solo per andare temporaneamente in modalità di linea (C-c C-j) quando si ha qualcosa da incollare, e poi subito tornare in modalità char (C-c C-k). O ancora più semplice, resta sempre in modalità linea. Lo faccio spesso quando ho un terminale connesso a una sessione Oracle SQL * Plus. Raramente noto la differenza, ma ottengo ogni tipo di funzionalità di Emacs, come la possibilità di digitare M-p per scorrere una lunga istruzione SQL precedentemente digitata.

avrei assunto che si può sempre iniziare in modalità riga come questa:

(add-hook 'term-mode-hook 'term-line-mode) 

... ma non funziona per me. Non so perché.

+0

C'è un modo per far sì che l'emulatore di terminale accetti gli yanks senza che l'intero buffer sia modificabile? O c'è un modo per configurare l'emulatore di terminale per iniziare sempre con 'line run'. – hekevintran

+1

Grazie per C-c C-j. Emacs è fantastico! – Raj

-1

Quando tutto il resto fallisce, evidenzia semplicemente il testo e faccio clic su Modifica-> Copia, quindi fare clic con il pulsante destro del mouse sull'altro buffer emacs e fare clic su Incolla.

+1

Il testo va nel buffer, ma premendo return non lo invia al terminale. Quindi sembra che tutto sia corretto finché non provi a eseguire il comando e non fa nulla. – hekevintran

1

Nel buffer con il terminale in esecuzione, mettere il terminale in modalità linea con C-c C-j. Per incollare il testo, ora premere S-Insert (che è Shift-Insert). Se hai bisogno che il terminale torni in modalità char in seguito, è C-c C-k.

Problemi correlati