关于ssh后使用spacemacs的复制粘贴问题。

我平时工作都是在windows下ssh到服务器用spacemacs码字。

但在spacemacs里面复制粘贴和windows这边无法打通!!!

码农不能用复制粘贴还是比较痛苦的!

求解决方案!!

另vim也不行…

ssh 里面的复制粘贴 剪切板在服务器上你怎么和windows打通…… 看你用什么 ssh 客户端,我猜鼠标操作的复制粘贴大概可行

1 个赞

有个笑话,秘书对老板说,这个电脑上复制是不可能在别的电脑上粘贴的,多贵的电脑都不行。

emacs 要 ssh ,用 tramp

在windows上面安装emacs,用tramp可以吗?

可以配合PuTTY使用。


就算是在 win 下,官网也有预先编译的依赖工具。

曲线救国了。

cygwin 安装 emacs-w32

远程主机的文件映射到本地

再ssh登录远程主机编译

透过 ssh 运行远程 emacs,你在本地能拷贝是屏幕上显示的内容:

                                   Remote
                                    File
      Local                      +--------+
      Screen                     | Line1  |
    +--------+--------<~~>----------------|
    | line2  |                   | line2  |
    | line3  |        SSH        | line3  |
    | line4  |                   | Line4  |
    +--------+--------<~~>----------------|
                                 | .....  |
                                 | LineN  |
                                 +--------+

也可以通过管道:

@local \> ssh [ remote_addr ] 'commad here' | [剪切板命令,我不知道在 Windows 是什么]

诶,用了一下cygwin 。

慢死了。

想找一个剪切板共享的软件。

另外:spacemacs 能不能通过鼠标右键复制粘贴啊?

最终 cygwin + cygwin/X +ssh + X11 Forwarding

解决!!

http://m.2cto.com/os/201405/299959.html

现在才想起有这篇文章。真是抱歉。 只要有个emacsclient就可以了。:smile:

刚刚看到你的另一个帖子后想起来的。

现在用 cygwin + cygwin/X +ssh + X11 Forwarding + xsel

挺好的。

windows里面cygwin开 xserver。 然后再在cygwin里面ssh上远程服务器。 在远程服务器上面的vim、emacs就可以和windows下面的复制粘贴共享了!!!!

ssh登录时候 ssh -Y xx@xxx vim 要huge全功能版本的 “+y 和 “+p emacs加配置:

;; http://hugoheden.wordpress.com/2009/03/08/copypaste-with-emacs-in-terminal/
;; I prefer using the "clipboard" selection (the one the
;; typically is used by c-c/c-v) before the primary selection
;; (that uses mouse-select/middle-button-click)
(setq x-select-enable-clipboard t)

;; If emacs is run in a terminal, the clipboard- functions have no
;; effect. Instead, we use of xsel, see
;; http://www.vergenet.net/~conrad/software/xsel/ -- "a command-line
;; program for getting and setting the contents of the X selection"
(unless window-system
  (when (getenv "DISPLAY")
    ;; Callback for when user cuts
    (defun xsel-cut-function (text &optional push)
      ;; Insert text to temp-buffer, and "send" content to xsel stdin
      (with-temp-buffer
        (insert text)
        ;; I prefer using the "clipboard" selection (the one the
        ;; typically is used by c-c/c-v) before the primary selection
        ;; (that uses mouse-select/middle-button-click)
        (call-process-region (point-min) (point-max) "xsel" nil 0 nil "--clipboard" "--input")))
    ;; Call back for when user pastes
    (defun xsel-paste-function()
      ;; Find out what is current selection by xsel. If it is different
      ;; from the top of the kill-ring (car kill-ring), then return
      ;; it. Else, nil is returned, so whatever is in the top of the
      ;; kill-ring will be used.
      (let ((xsel-output (shell-command-to-string "xsel --clipboard --output")))
        (unless (string= (car kill-ring) xsel-output)
          xsel-output )))
    ;; Attach callbacks to hooks
    (setq interprogram-cut-function 'xsel-cut-function)
    (setq interprogram-paste-function 'xsel-paste-function)
    ;; Idea from
    ;; http://shreevatsa.wordpress.com/2006/10/22/emacs-copypaste-and-x/
    ;; http://www.mail-archive.com/[email protected]/msg03577.html
))

我就能好好做我的代码搬运工了!

1 个赞

我来说一下上边 forward 方式的问题:

  1. 本地/远端都要安装 emacs。
  2. 除了配置本地 emacs,还要上传 shell 脚本到远端。
  3. 除了 SSH(22),还需要额外的端口(9999)。
  4. 除了本地 emacs 开启 server 模式,还需要额外开一个 ssh 到远端打开一次 emacsclient,并保持该 ssh 会话不中断。

做完以上步骤之后的效果,才相当于直接 tramp。另一种达到同样效果的是 sshfs,直接把远端目录映射到本地。

tramp(包括上述 forward) 有时候是很方便,但是它需要把整个文件传输到本地,文件稍大就能感受到读/写的延迟了。如果直接在远端编辑,需要传输的内容只有屏幕大小,唯一不方便的当你需要拷贝超过一屏的内容。

没这么麻烦啊。

ssh 登上远端服务器 支持forward 此时在服务器上面操作xsel 相当于操作cygwin本地的xsel了。

而cygwin的xsel又和windows剪切板相通。

此时剪切板内容就到了windows上面了。

用OSC52,甚至连url都能远程打开,具体请参见我的spacemacs配置

如果使用 XShell 等终端的鼠标复制粘贴功能,请在 .spacemacs 配置文件中 user-config 放置 (xterm-mouse-mode -1)

在neovim中有个小程序lemonade是可以在主机windows、客户机是linux之间传递数据的。 不知道emacs中有没有。

远程编辑文件能不能复制文件到本地编辑然后在每次保存的时候自动rsync到remote?

可以,tramp 支持 rsync 后端。做的就是这么回事。

就是 tramp