【问题标题】:Keep the user's configuration when running emacs in sudo mode在 sudo 模式下运行 emacs 时保留用户的配置
【发布时间】:2016-04-23 12:08:51
【问题描述】:

我必须在 sudo 模式下运行 emacs,才能在我的 /var/www 目录中编辑一些 .html 或 .php 文件。 当我在普通用户模式下运行它时,语法和颜色都没有问题(我安装了 php-mode.el 扩展名)。不幸的是,当我在 sudo 模式下运行它时,我失去了这个配置。 有什么办法找回来吗?

【问题讨论】:

  • 检查你和root是否有相同的vi别名:alias vi vs. sudo alias vi
  • 是的,我通过在我的 .zshrc 文件中设置启用了 root 的别名: alias sudo="sudo " 但是,我看不出它为什么会有帮助。另外,我没有使用 vim
  • @Alexander,为什么vi 上的别名与 Emacs 有任何关系?
  • 我指的是 emacs,而不是 vi。你有emacs的别名吗?或者你对 root 和你的本地用户有不同的 emacs 配置?

标签: php emacs syntax colors sudo


【解决方案1】:

不幸的是,当我在 sudo 模式下运行它时,我失去了这个配置,这很可悲。

这完全在意料之中。当您使用sudo 运行命令时,您是以不同的用户身份运行它,通常是root。大多数情况下会使用目标用户的配置。

有什么办法可以找回来吗?

我相信这里最好的选择是正常运行 Emacs,然后使用TRAMProot 的身份编辑文件。在这种情况下,我认为在文件前面加上 /sudo:: 就可以了,例如C-x C-f /sudo::/var/www/html/foo.php RET。 Emacs 会提示您输入密码,就像在命令行中的sudo 一样。

TRAMP 不仅仅允许您通过sudoroot 编辑某些文件,而且可能值得您花时间浏览它的手册。

【讨论】:

    【解决方案2】:

    您不太可能需要运行 sudo emacs,并且不必要地以 root 身份运行是不好的做法。

    sudoedit 命令/sudo -e 选项的存在是为了编辑其他用户拥有的文件。将使用的编辑器在手册 (man sudo) 中对 -e 选项的描述下进行了描述:

    运行策略指定的编辑器来编辑临时文件。 sudoers 策略使用 SUDO_EDITOR、VISUAL 和 EDITOR 环境变量(按此顺序)。如果没有设置 SUDO_EDITOR、VISUAL 或 EDITOR,则使用编辑器 sudoers(5) 选项中列出的第一个程序。

    使用这种方法,您将以普通用户的身份编辑文件,因此使用普通的编辑器配置。

    或者,根据 Chris 的回答,使用 Emacs 中内置的 Tramp 方法(如果您正在编辑许多文件,这很可能更简单)。

    如果这些文件基本上是您通常需要具有写入权限的文件,那么您可能应该将自己分配给具有写入权限的组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-29
      • 2011-06-02
      • 1970-01-01
      • 2020-07-14
      • 2016-05-12
      • 1970-01-01
      相关资源
      最近更新 更多