`(add-to-list 'process-coding-system-alist '("zsh" . utf-8))` 有什么问题?

`(add-to-list 'process-coding-system-alist '("zsh" . utf-8))` 有什么问题?

在 Emacs 中,我经常使用一个较差的 shell,通过 调用M-x shell。我经常需要专门设置它的编码系统,我用 和C-x RET putf-8两次)来完成。

我想在我的 .emacs 文件中一劳永逸地做到这一点。文档说通过 启动的 shell 的默认编码系统M-x shell来自process-coding-system-alist。查阅了此变量的文档后,我尝试

(add-to-list 'process-coding-system-alist '("zsh" . utf-8))

...sincezsh是我的默认 shell。(根据文档,添加的对的第一个元素被解释为与 shell 程序名称匹配的正则表达式,因此上面显示的字符串应该有效。)

但是,这无法产生预期的结果。(例如,在刚启动的 中,某些字符无法在 stdout 中正确显示*shell*;但是,一旦我执行 等,这些字符就会正确显示C-x RET p,如上所述。这意味着,无论我的add-to-list命令在做什么,它都没有做我想要它做的事情。)

我的问题很简单,为什么没有

(add-to-list 'process-coding-system-alist '("zsh" . utf-8))

工作?

注意:可能还有其他方法可以达到相同的结果,但在这里我特别想了解为什么我尝试的方法不起作用,并修复它。

答案1

我对此不确定,而且我也没有办法复制它,但是您是否在 utf-8 附近缺少一对括号?

(add-to-list 'process-coding-system-alist '("zsh" . (utf-8)))

答案2

在我的系统上,变量上的 C-hv 显示它被初始化为:("[pP][lL][iI][nN][kK]" . #1=(undecided-dos . undecided-dos))

因此,为了让 cygwin bash 正常工作,我添加了: (add-to-list 'process-coding-system-alist '("[bB][aA][sS][hH]" . (undecided-unix . undecided-unix)))

通过扩展我认为这会起作用: (add-to-list 'process-coding-system-alist '("zsh" . (utf-8 . utf)))

相关内容