Załóżmy, że chcę otworzyć plik w istniejącej sesji Emacsa przy użyciu su
lub sudo
, bez schodzenia do powłoki i wykonywania sudoedit
lub sudo emacs
. Jednym ze sposobów jest to
C-x C-f /sudo::/path/to/file
ale wymaga to kosztownej podróży w obie strony przez SSH . Czy jest bardziej bezpośredni sposób?
[EDYCJA] @JBB ma rację. Chcę mieć możliwość wywoływania su
/ sudo
zapisywania oraz otwierania. Ponowna autoryzacja podczas zapisywania byłaby OK (ale nie idealna). Co szukam to odmiany find-file
i save-buffer
że może być „wyprowadzony” przez su
/ sudo
.
emacs
file-permissions
sudo
Chris Conway
źródło
źródło
sudoedit
wzmiankę. Bardzo przydatne.Odpowiedzi:
Zaletą Tramp jest to, że płacisz za podróż w obie strony do SSH tylko wtedy, gdy otworzysz pierwszy plik. Sudo następnie buforuje twoje poświadczenia, a Emacs zapisuje uchwyt, dzięki czemu kolejne pliki otwierane sudo zajmują znacznie mniej czasu.
Nie znalazłem też dodatkowego czasu, jaki zajmuje oszczędzenie obciążenia. Jest wystarczająco szybki, IMO.
źródło
Tramp robi nie round-trip sudo poprzez SSH, używa powłoki w tle . Zobacz podręcznik: https://www.gnu.org/software/tramp/#Inline-methods
Dlatego radzę trzymać się TRAMP.
źródło
Jeśli używasz
helm
,helm-find-files
obsługuje otwieranie pliku jako root zC-c r
.źródło
M-x helm-find-files C-c ?
co mówi, jak powrócić do normalnego trybu otwierania jako użytkownik. PowtórzenieC-c r
tego nie zatrzymuje.sudo -k
a następnie pyta o hasło. Zrestartowałem Emacsa i to nie wyeliminowało problemu. Poszperałem.emacs.d
i znalazłem kilka odniesień do trampa, więc je usunąłem. Teraz wydaje się lepiej, ale nie jestem pewien, czy jestem od tego wolny.Niezupełnie odpowiedź na pierwotne pytanie, ale oto funkcja pomocnicza, która nieco ułatwia wykonanie trasy tramp / sudo:
źródło
esk-sudo-edit
.Przynajmniej w celu zapisania pakiet sudo-save został napisany dokładnie dla tego rodzaju problemu.
źródło
Twój przykład w ogóle nie uruchamia ssh, przynajmniej nie z moją wersją TRAMP („2.1.13-pre”). Zarówno znajdź plik, jak i zapisz bufor działają świetnie.
źródło
Zalecam używanie poleceń doradczych. Umieść tę funkcję w swoim ~ / .emacs
źródło
ido-find-file
do wyszukiwania plików.(działa tylko lokalnie. Należy zaktualizować, aby działał poprawnie przez tramp)
Trochę rozszerzona odpowiedź Burtona:
źródło
Fuj. Być może mógłbyś otworzyć powłokę w Emacsie i wykonać sudo emacs.
Problem polega na tym, że prawdopodobnie nie chcesz po prostu otworzyć pliku. Chcesz mieć możliwość późniejszego zapisania. Dlatego potrzebujesz praw roota, aby przetrwać, a nie tylko istnieć do otwierania pliku.
Wygląda na to, że chcesz, aby Emacs został Twoim menedżerem okien. Bez tego jest wystarczająco nadęty. :)
źródło