如何让Emacs'man'在Tramp上工作?

时间:2014-04-09 08:41:32

标签: unix emacs emacs24 man tramp

我有一个关于在Emacs中使用 M-x man 的问题。我一直在使用Tramp,而且远程服务器上安装的程序通常与我的本地设置有很大不同。我看到调用 M-x man 涉及在本地机器上查找相关联机帮助页。有没有办法指示它使用Tramp另一边的环境?

我知道有一个Elisp变量tramp-remote-process-environment而且我已经尝试为MANPATH添加一个条目,但它似乎不起作用(我担心这是因为我把它放入形式/usr/share/man而不是/scpc:user@host:/usr/share/man,但我想要的是一个适用于所有远程主机的通用解决方案。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

来自Man-start-calling中的man.el宏:

(let (...
    (default-directory
      (if (and (file-directory-p default-directory)
               (not (find-file-name-handler default-directory
                                            'file-directory-p)))
          default-directory
        "/"))

也就是说,如果当前默认目录(例如Tramp)有一个特殊的文件名处理程序,它将使用根目录作为从man开始的目录,因此它将看到来自正在运行Emacs的系统。

除了更改man.el之外,似乎没有办法禁用此功能。请注意,这是一个宏,因此您需要重新加载宏使用宏的所有函数。

答案 1 :(得分:0)

从命令的docstring中,人们希望它能够读取远程页面:

也可以给出明确的文件名。如果可能,请使用-l 否则看起来像一个页面名称。

/my/file/name.1.gz
-l somefile.1

您可以编写一个调用者,它会读取环境并组成所需的参数。