我正在尝试在Windows中的Emacs 23.2(最新版本)中启动 cmd 终端。
根据Manual,我可以通过输入M-x term
在Emacs中进入终端模式(为终端启动新的缓冲区)。
当我这样做时,系统会提示我:
Run program: path_to-emacs/bin/cmdproxy.exe
当我输入RET
时,我在迷你缓冲区中收到以下错误消息:
Spaning child process: invalid argument
任何想法如何使其发挥作用?
谢谢,
答案 0 :(得分:8)
以下内容应该:
米 - : (make-comint-in-buffer "cmd" nil "cmd" nil)
M-X ESHELL
M-X 壳
所有人都有自己的利弊。所以选择最适合你的。
答案 1 :(得分:6)
我在尝试运行M-x compile
时遇到了同样的错误。我将以下内容添加到我的.emacs
文件中,它修复了问题:
;; Make sure that the bash executable can be found
(setq explicit-shell-file-name "C:/cygwin/bin/bash.exe")
(setq shell-file-name explicit-shell-file-name)
(add-to-list 'exec-path "C:/cygwin/bin")
显然,只有安装了Cygwin才能使用此解决方案,但如果您在Windows上运行Emacs,通常至少需要安装Cygwin,因为许多Emacs命令可以利用cygwin提供的命令行工具(在我的情况下M-x compile
。
答案 2 :(得分:3)
有同样的问题。
我跑了procmon并发现Emacs希望以某种形式找到c:\bin\sh
sh.exe
,sh.bat
,sh.cmd
等。)
因为我碰巧想在android调试shell中使用term模式,所以我用内容“adb shell”创建了c:\bin\sh.bat
,它工作得很好,虽然有一些奇怪的输入延迟。
答案 3 :(得分:3)
如果您想在Windows上使用term
或ansi-term
与cmd.exe或Cygwin bash一起使用Win32 Emacs,请查看此项目:
在Win 10上为我工作非常好。
答案 4 :(得分:2)
请尝试使用M-x cmd-shell
。我建议使用EmacsW32
获得最佳效果。
答案 5 :(得分:0)
我一直在我的 .bash_profile 中使用它,您应该能够将其设置为您需要的任何内容。请注意 - 当我执行此操作时,我需要重新 source ~/.bash_profile
以获取我所有的别名和内容,但我仍然没有弄清楚。
当我通过“单击”一个文件来启动 Emacs 来运行 Emacs 时 - 我得到一个 Windows CMD 行,当我从 cygwin 中启动时 - 我得到一个 cygwin 类型的 shell。
export ESHELL="c:/cygwin64/bin/bash.exe"