usar tutorial como comandos buscar emacs file-permissions sudo

tutorial - Abra un archivo con su/sudo dentro de Emacs



como usar emacs (9)

Supongamos que quiero abrir un archivo en una sesión existente de Emacs usando su o sudo , sin dejar caer a un shell y hacer sudoedit o sudo emacs . Una forma de hacerlo es

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

pero esto requiere un costoso viaje de ida y vuelta a través de SSH . ¿Hay una manera más directa?

[EDIT] @JBB tiene razón. Quiero poder invocar su / sudo para guardar y abrir. Estaría bien (pero no es lo ideal) volver a autorizar al guardar. Lo que estoy buscando son variaciones de find-file y save-buffer que pueden ser "canalizadas" a través de su / sudo .


(funciona solo localmente. Necesita actualizarse para funcionar correctamente a través de vagabundo)

Un poco extendido la respuesta de Burton:

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


Al menos para guardar, se escribió un paquete sudo-save exactamente para ese tipo de problema.


Lo bueno de Tramp es que solo pagas ese viaje de ida y vuelta a SSH cuando abres el primer archivo. Sudo luego guarda sus credenciales en caché, y Emacs guarda un identificador, de modo que los archivos posteriores sudo-abiertos toman mucho menos tiempo.

No he encontrado el tiempo adicional que se necesita para ahorrar carga, tampoco. Es lo suficientemente rápido, IMO.


No es realmente una respuesta a la pregunta original, pero aquí hay una función de ayuda para facilitar un poco la ruta tramp / sudo:

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


Si usa helm , helm-find-files admite abrir un archivo como raíz con Cc r .


Su ejemplo no inicia ssh en absoluto, al menos no con mi versión de TRAMP ("2.1.13-pre"). Tanto find-file como save-buffer funcionan de maravilla.


Te recomiendo que uses comandos de asesoramiento. Pon esta función en tu ~ / .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))))



Ugh. Tal vez podrías abrir un shell en Emacs y exec sudo emacs.

El problema es que presumiblemente no solo quiere abrir el archivo. Desea poder guardarlo más tarde. Por lo tanto, necesita sus privilegios de raíz para persistir, no solo existir para abrir el archivo.

Parece que quieres que Emacs se convierta en tu administrador de ventanas. Está lo suficientemente hinchado sin eso. :)