当我尝试通过ssh在远程服务器上运行Emacs时,C-y
(甚至M-x yank
)无法工作。
每次我按下C-y
,它都会显示“Mark set”,但什么也不发生。我在Linux下工作,远程服务器是Mac Pro。
现在我只能将文件下载到我的个人电脑。有什么更好的解决办法吗?
当我尝试通过ssh在远程服务器上运行Emacs时,C-y
(甚至M-x yank
)无法工作。
每次我按下C-y
,它都会显示“Mark set”,但什么也不发生。我在Linux下工作,远程服务器是Mac Pro。
现在我只能将文件下载到我的个人电脑。有什么更好的解决办法吗?
C-y
仅会粘贴你之前通过C-w
或M-w
等方式在同一Emacs会话中删除的文本。文本模式并不是我的问题。
我有一台MacBook,在上面运行Emacs。我使用tramp-mode来编辑(远程)Linux系统上的文件。没有远程的Emacs,一切都是本地的。
我在Mac上设置了这样的复制/粘贴方式,以便在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)
显然,tramp模式尝试变得聪明,并在粘贴文本时运行我设置的pbpaste命令远程。 或者试图这样做。但我不想要这个。所以我修改了copy-from-osx
,像这样:
(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)))))
注意在运行pbpaste之前,它会暂时将tramp-mode设置为nil。
对我而言有效。
(when (eq system-type 'darwin)
来定义 copy-from-osx
函数,我已经删除了 "if" 部分: (defun copy-from-osx () (let ((tramp-mode nil) (default-directory "~")) (shell-command-to-string "pbpaste")))
- Lungang Fang