如何在windows下的mintty下以CLI模式运行emacs?

den*_*nys 14 emacs cygwin mingw msys

我正在使用mintty + msys.我想用它来使用emacs.但没有GUI.
我在cygwin中看到了这种行为.但我无法理解他们是如何做到的.

$ emacs -nw
  emacs: standard input is not a tty

$ stty.exe -a
  speed 38400 baud; rows 24; columns 80; line = 0;
  intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D; eol = <undef>;
  eol2 = <undef>; swtch = ^Z; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
  werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
  -parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
  -ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
  -iuclc ixany imaxbel
  opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
  isig icanon iexten echo echoe echok -echonl -noflsh -tostop echoctl echoke

$ echo $TERM
  xterm
Run Code Online (Sandbox Code Playgroud)

小智 6

如果你想使用精简的tty emacs,你可能需要使用cygwin的emacs.本机win32 emacs想要与Windows控制台窗口进行通信,而不是实际的tty - 错误消息在这里会产生误导.

如果你想坚持使用原生的win32 emacs,另一种选择是使用ConEmu,而不是薄荷.它提供兼容的Windows控制台界面,同时还提供普通终端模拟器的所有细节,如mintty.


Evg*_*yuk 6

你应该使用winpty:

winpty emacs -nw
Run Code Online (Sandbox Code Playgroud)

winpty是一个Windows软件包,提供类似于Unix pty-master的界面,用于与Windows控制台程序通信.该软件包包含一个库(libwinpty)和一个Cygwin和MSYS工具,用于在Cygwin/MSYS pty中运行Windows控制台程序.

你的案例中的Emacs实际上是"Windows控制台程序".

  • 这位拥有60年历史的CLI用户感谢您.Windows 10 Msys2(msys2-x86_64-20161025)msys emacs(本地/ mingw-w64-x86_64-emacs 25.2-1)CC被错误翻译为"<pause>"(请参阅​​:https://superuser.com/questions/93771/cxcc - 不工作,在-emacs的-23-1).使用Cygwin emacs二进制文件(emacs-nox 25.1.1)似乎工作正常. (2认同)
  • 对于 Ctrl-C 问题,一个相对简单的解决方法是为任何希望使用的包含 CC 的快捷方式添加包含“暂停”的映射。例如对于 CX CC:`(global-set-key [24 pause] (quote save-buffers-kill-terminal))` 另见:https://superuser.com/a/1361203/381671 (2认同)