我在 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 對話(因此我們看到的錯誤訊息具有誤導性,與它所指出的相反才是問題所在!)
我正在考慮的兩個直接選擇是
- 刪除我的 ~/.gitconfig 檔案中的
-nw
fromemacs -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 配置為預設編輯器 - 假設已透過將 Zip 發行版解壓縮到以下位置來安裝 Emacs 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。