让Emacs尊重我的默认shell +选项

mwi*_*ams 14 emacs terminal elisp text-editor

我正在尝试让我的Emacs shell模仿我的标准终端会话.基本上我希望它尊重相同的PATH以及命令提示符.

到目前为止,我有一些问题:

  • 找不到PATH,下面是我正在使用的修复程序.
  • 我正在尝试使用另一个修复程序来获取ascii颜色代码.

我在mwilliams.el文件中有以下内容.前几行让我可以访问Mx shell中的/ usr/local/bin,这解决了一半问题,最后几行让我使用Zsh运行,但我的提示非常灵活.

(setenv "PATH" (concat (getenv "PATH") ":/usr/local/bin"))
(setq exec-path (append exec-path '("/usr/local/bin")))


(defun shell ()
  (interactive)
  (ansi-term "/bin/zsh"))
Run Code Online (Sandbox Code Playgroud)

有了上面我在Mx shell中得到了以下所有内容.

4m\342/236/234 
Run Code Online (Sandbox Code Playgroud)

使用的模式是:(术语:char run yas)

据我所知,它不尊重我的Zsh主题中的一些ascii颜色代码.然而,我看到一些颜色通过; 所以它在那里的一半.我最好的猜测是我需要尊重我的.zshrc,其中包含有关我的主题和PATH的信息.

我刚刚在Emacs中弄湿了,在我开始将日常工作(以及其他所有工作)迁移到Emacs之前,获得坚固的外壳是我需要的最后几件事之一.

我在OSX Snow Leopard中运行Emacs 23.1(9.0).

小智 17

我不使用zsh,但我在zsh FAQ中找到了这个并尝试了一下.我有一个没有时髦角色的多彩ls.

3.10: Why does zsh not work in an Emacs shell mode any more?

Read more: http://www.faqs.org/faqs/unix-faq/shell/zsh/#ixzz0TyTJsHMq

另一种方法是放

#!/bin/sh 
TERM=emacs exec zsh
Run Code Online (Sandbox Code Playgroud)

到一个文件中~/bin/eshell,然后chmod +x ~/bin/eshell,告诉emacs的加入使用,作为外壳

(setenv "ESHELL" (expand-file-name "~/bin/eshell"))
Run Code Online (Sandbox Code Playgroud)

~/.emacs.