Как я могу использовать Emacs Tramp для ssh на удаленный хост и редактировать файл как другой пользователь на временной основе? - PullRequest
9 голосов
/ 20 октября 2011

/ multi раньше работал на меня, теперь он ушел, и я разочарован.

Что я хочу сделать, это в мире моей мечты:

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

... и работают в режиме ido.

Ключевым моментом здесь является то, что 'myuser', 'remotehost' и 'anotheruser'все они очень временные, я использую огромный массив удаленных хостов, часто с разными пользователями и поддающимися широкому кругу разных пользователей.

Что мне нужно добавить и как я могу его протестироватьбез перезагрузки emacs снова и снова?

Ответы [ 2 ]

8 голосов
/ 08 октября 2012

Начиная с этого коммита , TRAMP снова поддерживает многократные скачки ad-hoc.

Грубо говоря, вы используете его так:

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

У меня нетОн пока не работает надежно с ido-mode, и это позор, но это намного лучше, чем ничего!: -)

0 голосов
/ 19 декабря 2011

Может помочь следующий код:

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

Я не использовалшироко, но кажется, что это шаг в правильном направлении.

...