2010-10-18 13 views
11

Estoy en un Macintosh y estoy usando "terminal" para mi shell. Cuando copie texto de cualquier ventana (mediante el arrastre del mouse, luego el menú del botón derecho -> copiar) y luego pego el texto (botón derecho del mouse -> pegar) en un terminal con emacs en ejecución, no actúa como un pegado. En cambio, es como ingresar o escribir texto. El problema ocurre cuando el texto está sangrado. Emacs hace su sangría automática además de eso, así que obtengo una apariencia de texto en cascada parecida a una escalera. Solo quiero que sea una verdadera "pega" para que todo lo que se haya copiado aparezca exactamente como estaba. ¿Alguna idea sobre cómo cambiar algo para que esto funcione?Pegar texto en emacs en Macintosh

+0

No estoy seguro de cómo se espera que esto funcione. Un terminal de texto no tiene un "pegar". Terminal.app implementa pegar escribiendo todos los caracteres en el portapapeles. Si desea pegar para que funcione de manera diferente, no ejecute programas en un terminal de texto. – Ken

Respuesta

18

Prueba esto:

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

Uso C-x C-y para pegar y C-x M-w copiar.

+0

+1 Esto funcionará muy bien, ojalá lo hubiera pensado;) – ocodo

+0

Esto debería marcarse como la respuesta correcta – bge0

2

Para una solución rápida y sucia que no requiere la configuración de comandos personalizados, puede ejecutar shell-command con un argumento de prefijo para insertar los resultados de la llamada al pbpaste en el búfer en uso.

Por lo tanto:

C-u M-! pbpaste <RET> 
Cuestiones relacionadas