2011-10-20 6 views
9

/multi работал для меня, теперь он ушел, и я расстроен.Как я могу использовать tramp от emacs для ssh на удаленном узле и редактировать файл как другой пользователь на разовой основе?

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

/MyUser @ RemoteHOST: Суда: anotheruser:/некоторый/путь/к/файлу

... и есть идо режим работы ,

Главное здесь, что «myuser», «remotehost» и «anotheruser» - все очень ad hoc, я использую огромный массив удаленных хостов, часто с разными пользователями и sudo-ing для широкого спектра разные пользователи.

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

+0

Не могли бы вы уточнить: вы использовали 'tramp-completion-function-alist'? Какова ваша конфигурация? Возможно, следующая почта может вам помочь: http://stackoverflow.com/questions/95631/open-a-file-with-su-sudo-inside-emacs – Renaud

+1

В этой ветке приведен полный фон: http: // lists. gnu.org/archive/html/tramp-devel/2011-10/msg00014.html –

ответ

8

Начиная с this commit, TRAMP снова поддерживает специальные повторные прыжки.

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

/ssh:[email protected]|sudo:[email protected]:/some/file 

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

+2

Включено в Emacs 24, для кого-то интересно. См. Также http://stackoverflow.com/a/16408592/324105 – phils

+0

Подтвердил, что это сработало для меня на Emacs 24.3, никаких специальных конфигураций не требуется. Пункт уточнения: если ваш является псевдонимом, определенным в ~/.ssh/config (с хостом), то используйте локальный псевдоним для в обоих местах - вам не нужно переводить на истинное имя хоста для sudo , Вы также можете использовать это для dired/dired +, чтобы открыть удаленные каталоги и eshell. – mike

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/

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

 Смежные вопросы

  • Нет связанных вопросов^_^