Emacs -- 使用dired-mode测试以确定远程服务器名称/地址

4

dired-mode激活时,是否有一种测试方式可以获取current-buffer中远程服务器的名称(例如localhost)或地址(例如12.34.56.789)?

我想我可以使用string-matchsplit-string然后再使用equal,但我认为可能会有一个像获取服务器名称的便捷函数。

iphone -- dired-directory

/ssh:root@localhost#2222:/var/mobile/Applications/F30B1574-5979-4764-8742-7F9DB2863094/Documents/.0.data:

shared server -- dired-directory

/ssh:lawlist@12.34.56.789:/home/lawlist/public_html:

1
这似乎更多是TRAMP问题,而不是特定于DIRED。 - Barmar
@Barmar -- 谢谢您帮助我找到了正确的目标受众。 :) - lawlist
1个回答

5

如果您对游荡路径感兴趣,那么您可能需要查看tramp-dissect-file-namewith-parsed-tramp-file-name。例如:

(tramp-file-name-host (tramp-dissect-file-name path))

如果想要排除端口,请使用 tramp-file-name-real-host

如果还不确定的话,可能需要先检查 file-remote-p;这也引出了一个我以前从未注意到的好的快捷方式:

(file-remote-p path 'host)

这里似乎没有无端口选项。


非常感谢您的帮助 - 非常感激! :) 对于端口为2222的localhost,我最终使用了条件(and (file-remote-p dired-directory 'localhost) (equal (tramp-file-name-real-host (tramp-dissect-file-name dired-directory)) "localhost"))。对于另一个远程服务器,我正在使用几乎相同的东西 - 只是用12.34.56.789替换了localhost - lawlist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接