如何使用Emacs tramp ssh到远程主机并在临时的基础上将文件编辑为另一个用户?

时间:2011-10-20 08:04:28

标签: emacs ssh sudo tramp

/ multi曾经为我工作,现在已经不见了,我很沮丧。

我想做的是,在我梦想的世界里:

/ myuser @ remotehost:sudo:anotheruser:/ some / path / to / file

...并且有偶像模式工作。

这里的关键是'myuser','remotehost'和'anotheruser'都非常特别,我使用了大量的远程主机,通常有不同的用户和sudo-ing到各种不同的用户。

我需要添加什么以及如何在不重复加载emacs的情况下测试它?

2 个答案:

答案 0 :(得分:8)

this commit开始,TRAMP再次支持ad-hoc多跳。

粗略地说,你这样使用它:

/ssh:transituser@remotehost|sudo:user@remotehost:/some/file

我还没有使用ido-mode可靠地工作,这是一种耻辱,但它比没有好多了! : - )

答案 1 :(得分:0)

以下代码可能有所帮助:

  (defun find-file-as-root ()
    "Find a file as root."
    (interactive)
    (let* ((parsed (when (tramp-tramp-file-p default-directory)
                     (coerce (tramp-dissect-file-name default-directory)
                             'list)))
           (default-directory
             (if parsed
                 (apply 'tramp-make-tramp-file-name
                        (append '("sudo" "root") (cddr parsed)))
               (tramp-make-tramp-file-name "sudo" "root" "localhost"
                                           default-directory))))
      (call-interactively 'find-file)))

我在.emacs文件中有它,它似乎来自这里:http://atomized.org/2011/01/toggle-between-root-non-root-in-emacs-with-tramp/

我没有广泛使用它,但似乎这是朝着正确方向迈出的一步。