6

我正在运行一个进程,该进程在失败时输出字符“✖”(如 Unicode 中所定义)。但是,如果在 Emacs shell 缓冲区(GNU Emacs 的 Aquamacs 发行版)中运行该进程,我根本看不到错误。

使用: GNU Emacs 23.3.1 (i386-apple-darwin9.8.0, NS apple-appkit-949.54) of 2011-03-18 on braeburn.aquamacs.org - Aquamacs Distribution 2.2

如何让 Emacs shell 缓冲区支持此类 unicode 字符?

4

3 回答 3

7

要告诉单个 shell 缓冲区将 shell 的输出视为 UTF-8,请发出命令C-x RET p,并在询问“进程输出的编码系统:”时键入“utf-8”。当然后询问“编码系统输入流程:”时,我只需输入RET; 我从不直接向 shell 提供 UTF-8 输入。

或者,要自动获得此行为,请放入(prefer-coding-system 'utf8)您的.emacs文件中。实际上,这将导致 UTF-8 也用于其他一些上下文,这可能是大多数人想要的。

于 2011-07-12T21:02:19.633 回答
4

您可以调用如下函数来创建支持 utf-8 的 shell:

(defun utf8-shell ()
  "Create Shell that supports UTF-8."
  (interactive)
  (set-default-coding-systems 'utf-8)
  (shell))

这会将输入和输出都设置为 UTF-8,因此您可以(例如)执行以下操作:

~ $ echo "✖"
✖

如果您想让 shell 始终打开并支持 utf-8,您可以改为执行以下操作:

(defadvice shell (before advice-utf-shell activate)
  (set-default-coding-systems 'utf-8))

(ad-activate 'shell)
于 2011-07-12T21:12:44.020 回答
0

看看这个EmacsForMacOS wiki 页面。

于 2011-07-12T17:50:58.597 回答