我正在为 Windows 使用“git bash”(来自“git for Windows”),它又由 mingw+msys 和 mintty 组成。
此 mingw 安装包含一个可在 mintty 中运行的“vi”编辑器。很好。
问题:是否有其他可以在 mintty 终端仿真窗口中运行的编辑器?
问题是,mintty 终端窗口显然不是真正的 tty,而只是使用 stdin/stdout 与应用程序(编辑器)通信。
Nano 只是说:“不支持重定向。”。Emacs -nw 只是说 emacs:“标准输入不是 tty”
如果任何基本的文本编辑器具有比 vi 更好的用户界面,我就会很满意。
答案1
拾起JFM 的回答对问题如何在 Windows 上的 mintty 下以 CLI 模式运行 emacs?
JFM 指出本机 win32 emacs 想要与 Windows 控制台窗口对话,而不是实际的 tty(所以我们看到的错误消息具有误导性,与它所述的相反的才是问题所在!)
我正在考虑的两个直接选择是
-nw
从我的 ~/.gitconfig 文件中删除emacs -nw
并只使用弹出的 emacs;或者- 从 Git Bash 交换到正常的 Windows 命令行,
emacs -nw
设置可以正常工作。
对我来说,第一种选择的优点是 Git bash 终端可以在 Windows 和 Mac(以及 Linux)上使用。对我来说,第二种选择的优点是我可以使用我所有的 Windows 命令行知识。
答案2
答案https://stackoverflow.com/a/38544424/2416627指向正确的方向——使用winpty
Git for Windows 附带的命令作为实际编辑器命令的前缀。这适用于 Emacs,可能也适用于 Nano。
但是对于 Emacs,由于 Ctrl-C 组合键的处理存在问题,因此还需要另一种解决方法。
首先,这里介绍如何将 Emacs 配置为文本模式的默认编辑器 – 假设 Emacs 已经通过解压 Zip 分发包安装到C:\Program\Emacs
:
git config --global core.editor 'winpty /c/Program/Emacs/bin/emacs -nw'
但是,为了能够使用标准 CX CC 快捷方式退出 Emacs,必须在.emacs
登录用户的 Windows 用户配置文件位置顶层命名的文件中放入以下行:
(global-set-key [24 pause] (quote save-buffers-kill-terminal))
这同样适用于希望能够使用的任何其他包含 CC 的快捷方式 - 即,必须为它们提供额外的快捷方式映射,其中定义中使用“暂停”而不是 CC。