我一直在尝试在我的emacs会话中使用Zsh,而没有emacs重新映射所有Zsh密钥。我发现ansi-term对此很好,但是,我仍然有一些问题。我输出了很多垃圾字符,我能用以下方法修复它:
## Setup proper term information for emacs ansi-term mode
[[ $TERM == eterm-color ]] && export TERM=xterm
但是一切仍然不能完美。现在我无法在屏幕外绘制输出,特别是在使用C-r等搜索时。
我发现如果不调整窗口大小,它可以正常工作。我可以重现它:
emacs -q
ansi-term
并使用zsh
也许有一些方法可以让输出和迷你缓冲区之间的空间更大,以弥补过冲?
其他人的Zsh + Ansi术语是否正常工作?
答案 0 :(得分:13)
尝试MultiTerm。
它是唯一一款似乎与zsh配合使用的Emacs终端模式。它允许您轻松设置要由emacs捕获的命令以及您希望路由到终端的命令。到目前为止,默认设置对我来说已经足够了。
此外,将以下内容添加到.zshrc中,以允许emacs在您浏览时跟踪当前目录。
if [ -n "$INSIDE_EMACS" ]; then
chpwd() { print -P "\033AnSiTc %d" }
print -P "\033AnSiTu %n"
print -P "\033AnSiTc %d"
fi
答案 1 :(得分:3)
嗯。虽然我在20年内没有尝试过,但我认为我从未见过任何花哨的编辑工作。我会顺便问一下,如果你尝试过shell模式(M-x shell),那么无论如何它都会更加自然。
也就是说,通过term.el文件阅读,它看起来像ansi-term正在做很多自己的事情。您可能希望查看原始模式代码一词,从第1230行开始,至少在EMACS 22.3中。
答案 2 :(得分:1)
我现在也在寻找这个问题很长一段时间了。我在
中添加了以下内容;; ansi-term
(global-set-key "\C-x\C-a" '(lambda ()(interactive)(ansi-term "/bin/zsh")))
(global-set-key "\C-x\ a" '(lambda ()(interactive)(ansi-term "/bin/zsh")))
的工作原理。我选择了这个 http://svn.assembla.com/svn/id774/scripts/dot_files/dot_emacs.d/elisp/global-set-key.el。
我确信该脚本还有其他好东西。作为一个额外的奖金屏幕似乎与emacs很好地适合我。
答案 3 :(得分:0)
我明白了。这是一个emacs配置问题。我的.emacs中的这个elisp引起了它:
(custom-set-variables
'(fringe-mode nil nil (fringe))
'(fringes-outside-margins t t))
感谢您的帮助。