2010-06-05 34 views
11

我無法將文本翻譯成在Emacs中運行的終端。將文字翻譯成在Emacs中運行的終端

這是我的程序:

我從一個緩衝打死字符串「日期」,並拽其放入另一個緩衝區並回車終端。

終端的行爲就好像我什麼都沒輸入。它只是返回提示。

我使用OS X 10.5.8和Emacs 23.1。我已經在Aquamacs,Carbon Emacs和http://emacsformacosx.com/上發佈了這個程序。即使在默認配置中,我的.emacs文件爲空,它們也都顯示出這種奇怪的行爲。什麼可能造成這種情況?

回答

14

「在終端中」我假設你的意思是你正在運行Emacs的內置終端仿真器。通常,終端仿真器將鍵入的精確鍵傳送給shell進程。在終端緩衝區中鍵入C-c C-j,以將其置於普通Emacs密鑰綁定可用的狀態。您會看到模式行從(Term: char run)更改爲(Term: line run)

附錄:

洋金文字不離開字符模式是有點棘手;然而,相關功能是term-paste(不是yank,它只是將文本插入到終端緩衝區中,而不會將其發送到次級進程)。 term-paste將立即發送最近一次殺死到次等進程,但不提供您可能習慣的花式猛擊功能(如M-y以循環先前的殺死次數)。您可以將term-paste作爲擴展命令運行:C-c M-x術語粘貼RET

也許最簡單的解決方案只是暫時進入行模式(C-C C-J)時,你有什麼要粘貼,然後馬上回去成char模式(C-C C-K)。或者更簡單,只需一直保持在線模式。當我有一個終端登錄到Oracle SQL * Plus會話時,我經常這樣做。我很少注意到它們之間的差異,但是我獲得了各種方便的Emacs功能,例如可以輸入M-p來循環訪問一個長時間的先前類型的SQL語句。

我會認爲你總是可以在在線模式是這樣開始:

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

...但它不爲我工作。不知道爲什麼。

+0

有沒有辦法讓終端模擬器接受猛擊而不必讓整個緩衝區可編輯?或者有沒有辦法將終端仿真器配置爲始終以'line run'開頭。 – hekevintran 2010-06-05 04:16:33

+1

感謝C-C C-j。 Emacs真棒! – Raj 2013-05-02 14:33:57

-1

當其他所有失敗時,我只突出顯示文本,然後單擊編輯 - >複製,然後右鍵單擊其他emacs緩衝區並單擊粘貼。

+1

文本進入緩衝區,但點擊返回不會將其發送到終端。所以它看起來像一切都是正確的,直到你試圖運行命令,它什麼都不做。 – hekevintran 2010-06-05 04:58:09

1

在終端正在運行的緩衝區中,將終端置於線路模式C-c C-j。要粘貼文本,現在按S-Insert(即Shift-Insert)。如果您需要終端回到字符模式後,它是C-c C-k