2009-10-14 36 views
13

我试图让我的Emacs外壳模仿我的标准终端会话。基本上我希望它遵守相同的PATH以及命令提示符。获取Emacs尊重我的默认外壳+选项

到目前为止,我有几个问题:

  • 路径没有找到,下面是我使用的修复。
  • 我收到了我试过的另一个修复程序的所有地方的ascii颜色代码。

我在我的mwilliams.el文件中有以下内容。前几行让我可以访问M-x 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")) 

随着上述我得到以下所有贯穿始终,当我M-X壳。

4m\342/236/234 

正在使用的模式是:(期限:焦炭运行亚斯)

至于我可以告诉它不尊重一些ASCII颜色代码在我的岩组的主题。然而,我看到了几种颜色;所以它的一半。我最好的猜测是我需要它尊重我的.zshrc,其中包含有关我的主题和PATH的信息。

我只是在Emacs中弄湿了自己的脚,并且在我开始将我的日常工作(以及其他任何事情)迁移到Emacs之前,获得坚实的外壳是我需要的最后几件事之一。

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

回答

16

我不使用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 

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

(setenv "ESHELL" (expand-file-name "~/bin/eshell")) 

~/.emacs使用。

+0

真棒,方法#2工作就像一个魅力!谢谢! – mwilliams 2009-10-16 01:21:15

+0

我得到'代码1异常退出的进程shell \ nopen终端失败:找不到terminfo数据库'时,这样做。你们中的任何一个都遇到过这种情况,如果是的话,你们能够避开它吗? – 2013-02-10 00:50:38

1

对于路径,有包exec-path-from-shell(仅限OS X)。

它从shell中获取$MANPATH,$PATHexec-path并将它们设置为emacs。