Domanda

Supponiamo che io voglia aprire un file esistente, Emacs sessione di utilizzo su o sudo, senza cadere verso il basso per una shell e facendo sudoedit o sudo emacs.Un modo per farlo è

C-x C-f /sudo::/path/to/file

ma questo richiede un costoso giro attraverso SSH.C'è un modo più diretto?

[EDIT] @JBB è giusto.Voglio essere in grado di richiamare su/sudo per salvare aperta.Sarebbe OK (ma non è l'ideale) per ri-autorizzare al momento del salvataggio.Quello che sto cercando è di variazioni di find-file e save-buffer che può essere "di sottofondo" attraverso su/sudo.

È stato utile?

Soluzione

La cosa bella di Vagabondo è che si paga solo per il tragitto di andata e ritorno SSH quando apri il primo file.Sudo quindi memorizza nella cache le credenziali, e Emacs salva una maniglia, in modo che le successive sudo-i file aperti di prendere molto meno tempo.

Non ho trovato il tempo supplementare necessario per salvare gravare, sia.E ' abbastanza veloce, IMO.

Altri suggerimenti

Vagabondo fa non andata e ritorno sudo via SSH, utilizza un subshell.Vedi il manuale: https://www.gnu.org/software/tramp/#Inline-methods

Quindi, mi raccomando che si bastone con VAGABONDO.

Se si utilizza helm, helm-find-files supporta l'apertura di un file come root con C-c r.

Non proprio una risposta alla domanda originale, ma qui è una funzione di supporto per fare il vagabondo/sudo percorso un po ' più facile:

(defun sudo-find-file (file-name)
  "Like find file, but opens the file as root."
  (interactive "FSudo Find File: ")
  (let ((tramp-file-name (concat "/sudo::" (expand-file-name file-name))))
    (find-file tramp-file-name)))

Almeno per il salvataggio, un sudo-salva pacchetto è stata scritta proprio per quel tipo di problema.

Il tuo esempio non si avvia ssh a tutti, almeno non con la mia versione di VAGABONDO ("2.1.13-pre").Trovare il file di salvataggio del buffer di grande lavoro.

Vi consiglio di utilizzare la consulenza comandi.Inserire questa funzione nel tuo ~/.emacs

(defadvice ido-find-file (after find-file-sudo activate)
  "Find file as root if necessary."
  (unless (and buffer-file-name
               (file-writable-p buffer-file-name))
    (find-alternate-file (concat "/sudo:root@localhost:" buffer-file-name))))

(funziona solo in locale.Hanno bisogno di essere aggiornati per funzionare correttamente tramite il vagabondo)

Un po ' estesa Burton risposta:

(defun sudo-find-file (file-name)
"Like find file, but opens the file as root."
(interactive "FSudo Find File: ")
(let ((tramp-file-name (concat "/sudo::" (expand-file-name file-name))))
(find-file tramp-file-name)))


(add-hook 'dired-mode-hook
    (lambda ()
      ;; open current file as sudo 
      (local-set-key (kbd "C-x <M-S-return>") (lambda()
        (interactive)
        (message "!!! SUDO opening %s" (dired-file-name-at-point))
        (sudo-find-file (dired-file-name-at-point))
      ))
    )
)

Ugh.Forse si potrebbe aprire una shell in Emacs e exec sudo emacs.

Il problema è che, presumibilmente, non voglio solo aprire il file.Si vuole essere in grado di salvare più tardi.Quindi è necessario il root privs a persistere, non esistono solo per aprire il file.

Suona come si desidera Emacs per diventare il vostro window manager.È gonfio abbastanza, senza che.:)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top