我有一个关于在Emacs中使用 M-x man 的问题。我一直在使用Tramp,而且远程服务器上安装的程序通常与我的本地设置有很大不同。我看到调用 M-x man 涉及在本地机器上查找相关联机帮助页。有没有办法指示它使用Tramp另一边的环境?
我知道有一个Elisp变量tramp-remote-process-environment
而且我已经尝试为MANPATH
添加一个条目,但它似乎不起作用(我担心这是因为我把它放入形式/usr/share/man
而不是/scpc:user@host:/usr/share/man
,但我想要的是一个适用于所有远程主机的通用解决方案。有什么想法吗?
答案 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
您可以编写一个调用者,它会读取环境并组成所需的参数。