在Emacs中使用su / sudo打开文件
时间:2020-03-06 14:22:54 来源:igfitidea点击:
假设我想使用su或者sudo在现有的Emacs会话中打开文件,而无需进入shell并执行sudoedit或者sudo emacs。一种方法是
C-x C-f /sudo::/path/to/file
但这需要通过SSH进行昂贵的往返。有没有更直接的方法?
[编辑] @JBB是正确的。我希望能够调用su
/sudo
保存并打开。保存时重新授权是可以的(但不理想)。我正在寻找的是find-file和save-buffer的变体,它们可以通过su / sudo进行"管道传输"。
解决方案
啊。也许我们可以在Emacs和exec sudo emacs中打开一个shell。
问题是我们大概不只是想要打开文件。我们希望以后可以保存它。因此,我们需要root privs持久存在,而不仅仅是存在于打开文件的过程中。
听起来我们想让Emacs成为窗口管理器。没有它,它已经肿了。 :)
Tramp的好处是,打开第一个文件时,我们只需为往返SSH付费。然后,Sudo会缓存凭据,而Emacs将保存一个句柄,以便随后的sudo打开文件花费的时间要少得多。
我也没有发现节省负担的额外时间。 IMO,速度足够快。
示例根本不会启动ssh,至少不会以我的TRAMP版本(" 2.1.13-pre")启动。查找文件和保存缓冲区都可以很好地工作。
Tramp不会通过SSH来回传递sudo,它使用了一个subshell。请参阅手册:https://www.gnu.org/software/tramp/#Inline-methods
因此,我建议我们坚持使用TRAMP。
至少为了节省,一个sudo-save软件包正是针对这种问题编写的。