在emacs中打开文件后(通过ssh隧道,sshfs挂载的文件系统)我得到这样的符号链接:
.#jobid.php -> ddh@localhost.localdomain.31678:1260471633
我们已确定这些是emacs LOCK文件。
sshfs文件系统使用follow_symlinks和transform_symlinks挂载,但它似乎拒绝通过readlink返回链接'text',因此emacs不会删除它们。
答案 0 :(得分:2)
如果您正在寻找文档,Emacs会将这些文件称为file locks。
您可以直接从Emacs访问远程文件:
,而不是使用sshfs / FUSEC-x C-f /ssh:host.name:/path/to/file RET
以这种方式编辑远程文件时,Emacs不会创建文件锁 - 有关编辑远程文件的详细信息,请搜索“TRAMP”。 (不幸的是,我猜Emacs不能说你的FUSE挂载点是由远程文件系统支持的,或者在它上面创建文件锁是有问题的。)
答案 1 :(得分:1)
emacs使用这些符号链接来防止多个emacs实例修改同一文件。保存文件时,符号链接通常消失,但听起来像fuse-sshfs干扰了这个过程,因为符号链接的目标不是真正的文件(它不应该是,但sshfs期待它。)
不幸的是,我不知道如何禁用此功能或强制emacs将这些符号链接存储在不同的目录中(我很少使用emacs而我手册中没有找到任何内容),所以你可能需要我不敢手动定期删除它们。
答案 2 :(得分:1)
follow_symlinks
选项强制远程系统上的符号链接显示为实际文件。当符号链接引用通过sshfs挂载的目录之外的远程主机上的目标时,这很有用,但它会破坏Emacs的假设,因为当Emacs创建符号链接时,它希望以后相同的路径看起来像符号链接。
但是,您应该能够使远程主机上的所有符号链接正常工作,同时仍然使用transform_symlinks
选项(而不是follow_symlinks
)显示为符号链接,并且始终安装远程主机的根目录系统(而不仅仅是你的主目录或其他东西)。这应该允许emacs滥用符号链接作为锁定文件,同时仍然可以访问远程符号链接目标。
答案 3 :(得分:0)
当缓冲区访问文件时,这些符号链接由Emacs创建,它们阻止两个Emacs实例编辑同一个文件(如其他答案中所述)。 Emacs将此称为“冲突检测”。
不幸的是,在GNU emacs中阻止此行为的唯一方法是在编译时。源文档描述了如何通过更改标题来实现此目的。
这是因为锁定缓冲区和解锁缓冲区函数是基元,并且由其他基元调用以创建这些符号链接。在旧版本的Emacs中,可以在elisp中重新定义或取消它们,但原语不会注意到这种变化。