Emacs小技巧

在 Emacs 中,如果你需要编辑一个当前用户没有权限的文件(类似于在终端中使用 sudo ),可以通过以下几种方法实现:

方法 1:使用 trampsudo

Emacs 内置的 tramp 模式允许你通过 sudo 权限打开文件。具体步骤如下:

  1. 打开 Emacs。
  2. 按下 C-x C-f (即 Ctrl + x 然后 Ctrl + f )打开文件。
  3. 在文件路径前加上 /sudo:: ,例如:

    /sudo::/etc/hosts
    
  4. 按下回车,Emacs 会提示你输入当前用户的密码。
  5. 输入密码后,你就可以编辑并保存该文件了。

方法 2:使用 M-x shell 调用 sudo

如果你更喜欢在终端中使用 sudo ,可以通过以下步骤:

  1. 在 Emacs 中按下 M-x (即 Alt + x ),然后输入 shell 并回车。
  2. 这会打开一个内置的终端。
  3. 在终端中使用 sudo 命令编辑文件,例如:

    sudo nano /etc/hosts
    
  4. 编辑完成后保存并退出。

方法 3:使用 M-x eshell 调用 sudo

eshell 是 Emacs 的一个内置 shell,支持直接调用 sudo

  1. 在 Emacs 中按下 M-x ,然后输入 eshell 并回车。
  2. eshell 中使用 sudo 命令编辑文件,例如:

    sudo emacs /etc/hosts
    
  3. 编辑完成后保存并退出。

方法 4:保存时使用 sudo

如果你已经打开了文件但忘记使用 sudo ,可以在保存时临时提升权限:

  1. 编辑文件后,按下 M-x ,然后输入 write-file 并回车。
  2. 在文件路径前加上 /sudo:: ,例如:

    /sudo::/etc/hosts
    
  3. 按下回车,输入密码后即可保存。

方法 5:使用 sudoedit

如果你不想在 Emacs 中直接使用 sudo ,可以通过 sudoedit 命令:

  1. 在终端中运行:

    sudoedit /etc/hosts
    
  2. 这会使用默认编辑器(通常是 vimnano )打开文件。
  3. 如果你想将 Emacs 设置为默认编辑器,可以在 ~/.bashrc~/.zshrc 中添加:

    export EDITOR="emacsclient -c"
    export SUDO_EDITOR="emacsclient -c"
    
  4. 重新加载 shell 配置后, sudoedit 会使用 Emacs 打开文件。

总结

最推荐的方法是使用 tramp 模式(方法 1),因为它完全在 Emacs 中完成,无需切换到终端。如果你更喜欢终端操作,可以使用方法 2 或方法 3。根据你的习惯选择最适合的方式即可!如果还有其他问题,欢迎随时问我!

comments powered by Disqus