usar como comandos emacs ssh yank

como - comandos emacs



"TirĂ³n" no pega texto al usar Emacs sobre SSH (2)

Cuando traté de ejecutar Emacs en un servidor remoto a través de ssh, el Cy (incluso Mx yank ) no puede funcionar. Cada vez que presiono Cy , dice "Mark set", pero no sucede nada más. Estoy trabajando bajo Linux y el servidor remoto es un Mac pro.

Ahora solo puedo descargar el archivo a mi pc. ¿Alguna idea sobre cómo resolver mejor este problema?


Sospecho que su problema no se debe a que Emacs se ejecuta de forma remota, sino que se debe a que Emacs se ejecuta en el "modo de texto" (es decir, que se ejecuta dentro de un emulador de terminal). Cuando se ejecuta en ese modo, Emacs no sabe acerca de ninguna GUI circundante que se esté ejecutando, por lo que Cy solo arranca el texto que mató previamente en la misma sesión de Emacs a través de algo como Cw o Mw .

Puede tratar de hacer un "pegar" en su emulador de terminal (probablemente Cmd-v), que enviará el texto seleccionado a la aplicación subyacente (en este caso, Emacs) como si hubiera sido escrito. Siempre que el texto que está pegando esté hecho de caracteres "simples", podría funcionar bien. Si contiene caracteres de control divertidos, todas las apuestas están desactivadas (si contienen caracteres no ASCII, también pueden comportarse de forma divertida, dependiendo de si todo el "emulador de terminal + ssh + Emacs" está configurado correctamente o no) .


Lo de texto no era mi problema.

Tengo un macbook donde ejecuto emacs. Utilizo el modo vagabundo para editar archivos (de forma remota) en un cuadro de Linux. No hay emacs remotos. Es todo local.

Tenía copiar / pegar configurado así en el mac, así que pude "tirar" desde el portapapeles del sistema fuera de emacs:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; handle copy/paste intelligently (defun copy-from-osx () "Handle copy/paste intelligently on osx." (let ((pbpaste (purecopy "/usr/bin/pbpaste"))) (if (and (eq system-type ''darwin) (file-exists-p pbpaste)) (shell-command-to-string pbpaste)))) (defun paste-to-osx (text &optional push) "Handle copy/paste intelligently on osx. TEXT gets put into the Macosx clipboard. The PUSH argument is ignored." (let* ((process-connection-type nil) (proc (start-process "pbcopy" "*Messages*" "pbcopy"))) (process-send-string proc text) (process-send-eof proc))) (setq interprogram-cut-function ''paste-to-osx interprogram-paste-function ''copy-from-osx)

Aparentemente, el modo vagabundo intenta ser inteligente, y al tirar el texto, ejecuta el comando pbpaste que configuré, de forma remota . O lo intenta. Lo cual no quiero Así que modifiqué el copy-from-osx para que fuera así:

(defun copy-from-osx () "Handle copy/paste intelligently on osx." (let ((pbpaste (purecopy "/usr/bin/pbpaste"))) (if (and (eq system-type ''darwin) (file-exists-p pbpaste)) (let ((tramp-mode nil) (default-directory "~")) (shell-command-to-string pbpaste)))))

Observe que establece el modo vagabundo en nulo, temporalmente, antes de ejecutar pbpaste.

Funciona para mi.