2010-10-18 16 views
11

Jestem na komputerze Macintosh i używam "terminala" dla mojej powłoki. Kiedy kopiuję tekst z dowolnego okna (przeciągnij myszką, potem menu prawego przycisku myszy -> kopiuj), a następnie wklejam tekst (prawy przycisk myszy -> wklej) do terminala z uruchomionym emacsem, nie działa on jako pasta. Zamiast tego jest to tak samo jak wpisywanie lub wpisywanie tekstu. Problem występuje, gdy tekst jest wcięty. Emacs robi na nim auto-wcięcia, więc uzyskuję kaskadowy wygląd tekstu przypominający klatkę schodową. Po prostu chcę, żeby była to prawdziwa "pasta", aby wszystko, co zostało skopiowane, pokazywało dokładnie taką, jaka była. Wszelkie pomysły, jak zmienić coś, aby to działało?Wklejanie tekstu do emacsa na komputerze Macintosh

+0

Nie jestem pewien, jak można się spodziewać to zadziałało. Terminal tekstowy nie ma "wklejania". Terminal.app implementuje wklej, wpisując wszystkie znaki w schowku. Jeśli chcesz, aby wklej działał inaczej, nie uruchamiaj programów w terminalu tekstowym. – Ken

Odpowiedz

18

Spróbuj tego:

(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) 

Zastosowanie C-x C-y wkleić i C-x M-w skopiować.

+0

+1 To zadziała świetnie, chciałbym o tym pomyśleć;) – ocodo

+0

To powinno być oznaczone jako poprawna odpowiedź – bge0

2

Aby uzyskać szybkie i brudne rozwiązanie, które nie wymaga konfigurowania niestandardowych poleceń, można uruchomić shell-command z argumentem przedrostka, aby wstawić wyniki wywołania pbpaste do bieżącego bufora.

Zatem:

C-u M-! pbpaste <RET> 
Powiązane problemy