我在正常的终端 session 中使用ansi-term。我倾向于在提示符下使用unicode字符来做类似根据所使用的源代码控件类型设置尾随字符的操作。
我使用字符“±”作为git存储库的提示。
在Emacs的ansi术语中,我的提示未呈现为unicode,而是显示为“\302\261”。显示当前的编码系统表明,该过程的输入默认为utf-8-unix,但是我得到了原始二进制作为解码输出。我可以按C-c RET p来更改编码和解码编码系统。我在启动终端时如何自动设置空白?我尝试添加到term-mode-hook来将缓冲区的编码系统设置为无效。我想我已经找到了我在term.el中寻找的内容,但是我不在乎调整发行版elisp,而且似乎添加了原始二进制文件来修复其他地方的错误。
编辑:最初不清楚。我在为MacOS上的 cocoa 化Emacs 23.3下运行的ansi-term设置默认过程编码系统时遇到问题。 Emacs本身不在终端中运行,我的终端在Emacs中运行。
最佳答案
以下为我工作:
(add-hook 'term-exec-hook
(function
(lambda ()
(set-buffer-process-coding-system 'utf-8-unix 'utf-8-unix))))
ansi-term
似乎忽略了default-process-coding-system
变量,因此我必须在执行 shell 程序后在本地设置缓冲区。