从终端调用时强制 emacs 使用 `-nw` 运行

Ste*_*fan 3 shell emacs

注意:这个问题之前可能有人问过(我想我在某处看到过),但快速搜索并没有发现任何东西。

当从 shell 运行命令时,我想说明不同之处。

可以使用-nw标志初始化 Emacs以禁用gui窗口,我希望这是默认行为。但是,如果emacs从非 shell 环境运行(例如,从Open With您的文件管理器桌面配置的热键或什至从bashrun 运行),则不应使用-nw标志调用它。

更新:这应该是全局更改,sudo emacs在终端中运行不应该突然打开一个gui。我在哪里进行这些更改?

War*_*ung 9

说这个:

$ echo "alias emacs='emacs -nw'" >> ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

注销,然后重新登录,您将获得您所要求的行为。别名仅适用于 Bash。


Gil*_*il' 7

我认为您想确定命令是否在终端中运行。

if [ -t 2 ]; then
  # Standard error is a terminal
  emacs -nw "$@"
elif [ -n "$DISPLAY" ]; then
  # An X display is available
  xterm -e emacs -nw "$@"
else
  # We have nothing
  emacs --daemon "$@"
fi
Run Code Online (Sandbox Code Playgroud)

如果您希望在运行 Emacs 时总是发生这种情况,请将其放入脚本中并改为调用该脚本。/usr/local/bin/emacs如果您希望脚本emacs优先emacs/usr/bin.

请注意,要以 root身份编辑文件,您应该使用sudoedit(好处:编辑器会像您一样运行,因此您可以获得所有设置;完成编辑后,编辑的文件会自动放置到位,从而减少发生事故的可能性)。您还可以直接在 Emacs 中以 root 身份编辑文件,方法是打开/sudo::/path/to/file.