我目前正在使用流浪汉在远程机器上做很多工作。但是,在构建 make 命令行时项目逻辑会变得混乱,因为它会尝试 cd 到某些 /ssh:blah.... 路径。
tramp 是否提供任何 API 函数来测试缓冲区或缓冲区文件名是否实际上由 tramp 管理并因此在远程计算机上?它能否提供有关连接类型的其他信息(例如 ssh 用户/主机详细信息)?
关于检查文件名是否由 tramp 管理的第一个问题,请参阅函数 tramp-tramp-file-p,如果文件名是 tramp 文件,它将返回 t。
该变量tramp-file-name-regexp
用于匹配类似 Tramp 的文件名。(编辑:请参阅下面的 erikriverson 的答案,以获得更方便的匹配方式。)
这被添加到file-name-handler-alist
(确定所有文件名的处理程序),并与 关联tramp-file-name-handler
,因此您也可以测试函数的返回值find-file-name-handler
以查看它是否匹配。这似乎是一种更强大的方法(尽管在实践中它可能没有区别)。
(eq (find-file-name-handler filename nil) 'tramp-file-name-handler)
(tramp-dissect-file-name filename)
然后将返回各个连接组件(另请参见tramp-file-name-structure
变量)。