Table of Contents
在 Emacs 中,如果你需要编辑一个当前用户没有权限的文件(类似于在终端中使用 sudo ),可以通过以下几种方法实现:
方法 1:使用 tramp 和 sudo
Emacs 内置的 tramp 模式允许你通过 sudo 权限打开文件。具体步骤如下:
- 打开 Emacs。
- 按下
C-x C-f(即Ctrl + x然后Ctrl + f)打开文件。 在文件路径前加上
/sudo::,例如:/sudo::/etc/hosts
- 按下回车,Emacs 会提示你输入当前用户的密码。
- 输入密码后,你就可以编辑并保存该文件了。
方法 2:使用 M-x shell 调用 sudo
如果你更喜欢在终端中使用 sudo ,可以通过以下步骤:
- 在 Emacs 中按下
M-x(即Alt + x),然后输入shell并回车。 - 这会打开一个内置的终端。
在终端中使用
sudo命令编辑文件,例如:sudo nano /etc/hosts
- 编辑完成后保存并退出。
方法 3:使用 M-x eshell 调用 sudo
eshell 是 Emacs 的一个内置 shell,支持直接调用 sudo :
- 在 Emacs 中按下
M-x,然后输入eshell并回车。 在
eshell中使用sudo命令编辑文件,例如:sudo emacs /etc/hosts
- 编辑完成后保存并退出。
方法 4:保存时使用 sudo
如果你已经打开了文件但忘记使用 sudo ,可以在保存时临时提升权限:
- 编辑文件后,按下
M-x,然后输入write-file并回车。 在文件路径前加上
/sudo::,例如:/sudo::/etc/hosts
- 按下回车,输入密码后即可保存。
方法 5:使用 sudoedit
如果你不想在 Emacs 中直接使用 sudo ,可以通过 sudoedit 命令:
在终端中运行:
sudoedit /etc/hosts
- 这会使用默认编辑器(通常是
vim或nano)打开文件。 如果你想将 Emacs 设置为默认编辑器,可以在
~/.bashrc或~/.zshrc中添加:export EDITOR="emacsclient -c" export SUDO_EDITOR="emacsclient -c"
- 重新加载 shell 配置后,
sudoedit会使用 Emacs 打开文件。
总结
最推荐的方法是使用 tramp 模式(方法 1),因为它完全在 Emacs 中完成,无需切换到终端。如果你更喜欢终端操作,可以使用方法 2 或方法 3。根据你的习惯选择最适合的方式即可!如果还有其他问题,欢迎随时问我!
