파일을 열 su/sudo 내부 Emacs
-
01-07-2019 - |
문제
가정 내가 원하는 파일을 열려면 기존 이맥스를 사용하여 세션 su
나 sudo
, 없이 아래로 떨어지는 쉘고 sudoedit
나 sudo emacs
.이렇게 하는 방법 중 하나이
C-x C-f /sudo::/path/to/file
하지만 이 필요로는 비싼 라운드 여행을 통해 SSH.은 거기에 좀 더 직접적인 방법은?
[편집]@JBB 다.내가 원할 수 있게 su
/sudo
저장 뿐 아니라 열려 있습니다.그것은 것이 확인(지만 이상)다시 권한을 부여 저장하는 경우.내가 무엇을 찾고 있는 변화 find-file
고 save-buffer
할 수 있는"파이프를 통해" su
/sudo
.
해결책
좋은 일에 대한 부정기선은 당신이 지불하는 라운드 여행을 SSH 을 열 때 첫 번째 파일입니다.Sudo 다음을 캐시명,Emacs 저장,처리되도록 후속 sudo-열었던 파일은 훨씬 적은 시간이 걸릴.
내가 찾지 않은 추가하는데 걸리는 시간을 저장하는 부담을 주거나,.그것은 충분히 빠르,IMO.
다른 팁
바람둥이가 지 왕복 여행 sudo SSH 를 통해,그것은 사용 점이 존재한다..설명서를 참조하십시오: https://www.gnu.org/software/tramp/#Inline-methods
따라서 나는 권장 당신이 지팡이로 바람둥이입니다.
당신이 사용하는 경우 helm
, helm-find-files
지원 파일 열기로 루트로 C-c r
.
정말로 원래의 질문에 대답하지만,여기에는 도우미 기능을 확인 하기 바람둥/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)))
에서 이상 저장,a sudo-저장 패키지 작성 되었을 정확히 종류의 문제입니다.
귀하의 예를 시작하지 않는 ssh 에서,모든 적어도 내전램프("2.1.13-pre").모두 찾을 파일에 저장 버퍼 작업 중대하다.
내가 당신을 사용하여 조언 명령입니다.이 함수에서~/.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))))
(만 작동합니다.업데이트할 필요가 제대로 작동하려면을 통해 바람둥)
조금 확장 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))
))
)
)
습니다.아마도 당신은 열 수있는 쉘에서 이맥스 및 exec sudo emacs.
문제는 당신은 아마도 당신고 싶지 않 파일을 엽니다.할을 저장할 수 있습니다.따라서 당신은 필요한 루트 privs 을 지속되지만 존재하는 파일을 열기 위해.
하지 않는 이유는 다음과 같습 Emacs 이 될 수 있습니다.그것은 부풀지 않고 충분히는.:)