How can I use Emacs tramp to ssh to a remote host and edit a file as another user on an ad-hoc basis?

前端 未结 2 1870
[愿得一人]
[愿得一人] 2020-12-31 11:49

/multi used to work for me, now it\'s gone and I\'m frustrated.

What I want to do is, in my dream world:

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

相关标签:
2条回答
  • 2020-12-31 12:33

    The following code may help:

      (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)))
    

    I had it in my .emacs file, and it seems to come from here: http://atomized.org/2011/01/toggle-between-root-non-root-in-emacs-with-tramp/

    I haven't used it extensively but it seems like that is a step in the right direction.

    0 讨论(0)
  • 2020-12-31 12:36

    As of this commit, TRAMP supports ad-hoc multiple hops again.

    Roughly speaking, you use it like this:

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

    I haven't got it to work reliably with ido-mode yet, which is a shame, but it's a lot better than nothing! :-)

    0 讨论(0)
提交回复
热议问题