Emacs Tramp 在挂起/恢复后保存并打开当前缓冲区时挂起

jus*_*kin 6 emacs ubuntu tramp

在 Ubuntu 12.10 上运行 Emacs (24.3.1) 和 Tramp (2.2.6-24.3) 时,我将通过 Tramp 打开一堆远程文件,例如:

m-x find-file: /scp:user@example.com:~/file.txt
Run Code Online (Sandbox Code Playgroud)

在我的笔记本电脑上进行暂停/恢复循环后,我将返回 Emacs 并开始在打开的缓冲区中工作。一旦我保存或自动保存,它就会冻结,并会显示“args out of range(000 - 000)”(此消息来自内存,零代表它显示的数字,下次我收到它时将对其进行编辑)错误并且不保存。任何后续尝试都将挂起。

另外,我无法在 find-file 中使用相同协议打开任何其他文件,如上面的“scp”情况。

我发现的一些解决方法是首先删除 ~/.emacs.d/tramp 文件,该文件有时有效,有时在多个挂起/恢复周期后它不存在。

另一个解决方法是在打开文件时使用其他协议,因此在上面的查找文件行中我将使用“ssh”或“scpc”。这仅用于打开新缓冲区,而不用于保存当前缓冲区,因此我通常会关闭文件的缓冲区,然后使用我提到的不同协议重新打开它。

有什么建议么?

rha*_*oto 5

我还没有看到“args out of range”错误,但是当我在连接中断后挂起时,我通过杀死协议/主机的 Tramp 缓冲区成功了。它通常被命名为类似*tramp/scpc hostname*. 对需要通信的文件缓冲区的下一个操作将重新建立连接。

这真的很容易,ido-switch-buffer因为你可以在迷你缓冲区中完成这一切 - 输入几个字母来找到 Tramp 缓冲区,然后 Ck 来杀死它。


重置连接的另一种(也许更干净)方法是使用“Mx trapmp-cleanup-this-connection”:

Tramp-cleanup-this-connection 是“tramp-cmds.el”中的交互式自动加载编译 Lisp 函数。

(流浪者清理此连接)

刷新当前缓冲区连接的所有连接相关对象。

另请参阅“Mx trapmp-cleanup-all-connections”和“Mx trapmp-cleanup-all-buffers”。