2010-06-05 12 views
11

Ich kann Text nicht in ein Terminal in Emacs ziehen.Text in ein Terminal in Emacs einlesen

Das ist mein Verfahren:

ich die Zeichenfolge „date“ getötet von einem Puffer und zerrte sie in das Terminal in einem anderen Puffer und drücken die Eingabetaste.

Das Terminal verhält sich, als ob ich nichts eingegeben hätte. Es gibt nur die Eingabeaufforderung zurück.

Ich verwende OS X 10.5.8 und Emacs 23.1. Ich habe dieses Verfahren auf Aquamacs, Carbon Emacs und die Freigabe von http://emacsformacosx.com/ versucht. Sie alle zeigen dieses seltsame Verhalten sogar in ihren Standardkonfigurationen mit meiner .emacs Datei leer. Was könnte das verursachen?

Antwort

14

Mit "in einem Terminal" nehme ich an, Sie meinen, dass Sie Emacs eingebauten Terminal-Emulator ausführen. Normalerweise überträgt der Terminal-Emulator die meisten Schlüssel genau so, wie sie in den Shell-Prozess eingegeben wurden. Geben Sie C-c C-j in den Terminal-Puffer ein, um ihn in einen Zustand zu versetzen, in dem normale Emacs-Tastenbindungen verfügbar sind. Sie werden sehen, dass sich die Moduslinie von (Term: char run) zu (Term: line run) ändert.

Nachtrag:

Yanking Text ohne Zeichenmodus zu verlassen ein wenig schwierig ist; die relevante Funktion ist jedoch term-paste (nicht yank, die den Text lediglich in den Terminalpuffer einfügt, ohne ihn an den minderwertigen Prozess zu senden). term-paste wird sofort den letzten Kill an den minderwertigen Prozess senden, bietet aber nicht die ausgefallene Yank-Funktionalität, die Sie wahrscheinlich gewohnt sind (wie M-y, um vorherige Kills zu durchlaufen). Sie könnten term-paste als einen erweiterten Befehl ausführen: C-c M-X-Ausdruck einfügen RET.

Wahrscheinlich ist die einfachste Lösung nur temporär in Zeilenmodus zu gehen (C-c C-j), wenn Sie etwas zu fügen, und dann sofort wieder in char-Modus (C-c C-k) gehen. Oder noch einfacher, bleiben Sie immer im Line-Modus. Ich tue dies oft, wenn ich ein Terminal in einer Oracle SQL * Plus-Sitzung angemeldet habe. Ich merke selten den Unterschied, aber ich bekomme alle möglichen praktischen Emacs-Funktionen, wie zum Beispiel die Möglichkeit, M-p einzugeben, um eine lange, vorher eingegebene SQL-Anweisung durchzulaufen.

ich, dass Sie im Zeilenmodus wie könnte dies immer beginnen angenommen haben würde:

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

... aber es für mich nicht funktioniert. Ich weiß nicht warum.

+0

Gibt es eine Möglichkeit, dass der Terminalemulator Yanks akzeptiert, ohne dass der gesamte Puffer editierbar ist? Oder gibt es eine Möglichkeit, den Terminal-Emulator so zu konfigurieren, dass er immer mit "line run" startet. – hekevintran

+1

Danke für C-c C-j. Emacs ist großartig! – Raj

-1

Wenn alles andere fehlschlägt, markieren Sie einfach den Text und klicken Sie auf Bearbeiten-> Kopieren, klicken Sie dann mit der rechten Maustaste in den anderen Emacs-Puffer und klicken Sie auf Einfügen.

+1

Der Text wird in den Puffer eingegeben, aber wenn er zurückkehrt, wird er nicht an das Terminal gesendet. Es sieht also so aus, als wäre alles korrekt, bis Sie versuchen, den Befehl auszuführen, und nichts tut. – hekevintran

1

Im Puffer mit laufendem Terminal das Terminal in den Linienmodus mit C-c C-j bringen. Um Ihren Text einzufügen, drücken Sie S-Insert (das ist Shift-Insert). Wenn Sie möchten, dass das Terminal anschließend in den Char-Modus zurückkehrt, ist es C-c C-k.

Verwandte Themen