在Emacs中使用Cygwin shell时,输出混乱了?

5

我在这里看到了如何启动cygwin shell的答案。然而,cygwin shell的输出混乱不堪。

(defun cygwin-shell ()
  "Run cygwin bash in shell mode."
  (interactive)
  (let ((explicit-shell-file-name "C:/cygwin/bin/bash"))
    (call-interactively 'shell)))
(setq  explicit-bash-args '("--login" "-i"))

这是一个shell的示例输出:

]0;~
seth@seth ~
$ cd ~
]0;~
seth@seth ~
$ dir
]0;~
seth@seth ~

从结果可以看出,输出内容混乱。我该如何解决?

编辑:我刚刚注意到每个命令的结尾都会出现^[]0,否则输出文本正常。有没有办法去掉这个结尾?

4个回答

4

好的,我已经理解了。在~/.bashrc中,我添加了以下内容:

export PS1="\e[0;31m[\u@\h \W]\$ \e[m "

这将使单行提示符变为红色(相比原始cygwin提示符中的黄色更易于阅读!)
请参见http://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/ 另外,您必须确保不使用dos换行符。要将dos换行符转换为unix,请键入C-x RET f unix并保存或放置在.emacs文件中。
(set-buffer-file-coding-system 'unix)

2

可以尝试使用EmacsW32。使用它后,你的.emacs配置将变得更加简单易用。

  (setq w32shell-cygwin-bin "c:\\cygwin\\bin")
  (require 'w32shell)
  (w32shell-add-emacs)
  (w32shell-set-shell "cygwin")

一切都正常工作。


2
在Emacs 24.2中,我必须将Seth答案(2)中的export PS1=...行放在~/.emacs_bash而不是~/.bashrc中。

1

使用

export PS1="\e[0;32m\u@\h\e[m \e[0;33m\w\e[m\n\$ "

如果您希望保持原始颜色和格式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接