2010-10-18 34 views
11

我在Macintosh上,正在使用「終端」作爲我的外殼。當我從任何窗口複製文本(通過鼠標拖動,然後右鍵菜單 - >複製),然後將文本(鼠標右鍵 - >粘貼)粘貼到運行emacs的終端中時,它不起粘貼作用。相反,它就像輸入或輸入文本一樣。當文本縮進時會出現問題。 Emacs在它上面做了自動縮進,所以我得到了一個層疊式的階梯式文本外觀。我只是希望它成爲一個真正的「粘貼」,以便所複製的內容完全按照原樣顯示。任何想法如何改變一些東西,讓這個工作?在Macintosh上將文本粘貼到emacs上

+0

我不知道你是如何想到這個工作。文本終端沒有「粘貼」。 Terminal.app通過輸入剪貼板上的所有字符來實現粘貼。如果要粘貼以不同的方式工作,請勿在文本終端中運行程序。 – Ken 2010-10-18 14:40:25

回答

18

試試這個:

(defun pt-pbpaste() 
    "Paste data from pasteboard." 
    (interactive) 
    (shell-command-on-region 
    (point) 
    (if mark-active (mark) (point)) 
    "pbpaste" nil t)) 

(defun pt-pbcopy() 
    "Copy region to pasteboard." 
    (interactive) 
    (print (mark)) 
    (when mark-active 
    (shell-command-on-region 
    (point) (mark) "pbcopy") 
    (kill-buffer "*Shell Command Output*"))) 

(global-set-key [?\C-x ?\C-y] 'pt-pbpaste) 
(global-set-key [?\C-x ?\M-w] 'pt-pbcopy) 

使用C-x C-y粘貼和C-x M-w複製。

+0

+1這會很好,希望我能想到它;) – ocodo 2010-10-19 00:28:21

+0

這應該被標記爲正確的答案 – bge0 2015-07-14 08:43:03

2

對於不需要配置自定義命令的快速和骯髒的解決方案,您可以運行帶有前綴參數的shell-command以將調用pbpaste的結果插入到當前緩衝區中。

這樣:

C-u M-! pbpaste <RET>