Почему Ctrl-Z в оболочке Windows Git bash терпит неудачу?

мне иногда приходится работать в Windows, что часто означает использование оболочки Bash. Если я (например) в vim (не gvim) с несколькими открытыми файлами, и я ударил CtrlZ чтобы ненадолго вернуться к оболочке и сделать что-то, прежде чем вернуться в vim, вместо того чтобы прекратить мои vim процесс Git Bash создает новую оболочку DOS. Это последнее, чего бы я хотел. Googling не находит ничего полезного (на данный момент времени - YMMV в моем будущем). Что происходит?

2 ответов


иногда мне приходится работать в Windows, что часто означает использование оболочки Git Bash.

хорошо. Я тоже.

Если я (например) в vim (не gvim) с несколькими открытыми файлами, и я ударил ^Z, чтобы ненадолго вернуться в оболочку и сделать что-то перед возвращением в vim, вместо приостановки моего процесса vim Git Bash создает новую оболочку DOS.

Если вы выполняете другие процессы в Git bash, CTRL-Z также не приостанавливает их. Напор работает вокруг этого и вместо этого создает оболочку для достижения аналогичного результата. Vim-это инструмент в windows, который не требует bash, а командная строка windows обязательно будет установлена на машине windows. Я предполагаю, что это безопасный выбор программы Windows binary.

Это последнее, что я хочу. Googling не находит ничего полезного (на данный момент времени - YMMV в моем будущем). Что происходит?

Я предполагаю, что vim имеет CTRL-Z карта для создания оболочки DOS. Если вы хотите создать оболочку bash вместо этого, вы можете ввести:

:!sh

и вы будете выполняться в оболочке bash.


Я предполагаю, что причина этого в том, что Windows не реализует API процесса приостановки POSIX. У меня была такая же проблема, и я не нашел общего решения. Но для конкретных распространенных случаев (таких как gvim) работа заключается в создании скрипта где-то на вашем пути (например, /c/bin/gvim) по строкам

   #!/bin/env bash
   /c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe $@ &