【问题标题】:Why does Ctrl-Z on Windows Git bash shell fail?为什么 Windows Git bash shell 上的 Ctrl-Z 会失败?
【发布时间】:2012-09-03 13:12:02
【问题描述】:

我有时必须在 Windows 中工作,这通常意味着使用 Bash shell。如果我(例如)在 vim (not gvim) 中打开了几个文件,然后我按下 CtrlZ 来简要在返回 vim 之前返回 shell 并做一些事情,而不是暂停我的 vim 进程 Git Bash 创建一个新的 DOS shell。这是我想要的最后一件事。 Googling turns up nothing useful(在这个时间点 - 我未来的 YMMV)。 怎么回事?

【问题讨论】:

  • 就我而言,它最近开始出现故障,我不知道为什么......

标签: cygwin msysgit git-bash


【解决方案1】:

如果我(例如)在 vim(不是 gvim)中打开了多个文件,然后我按 ^Z 短暂返回 shell 并在返回 vim 之前做一些事情,而不是暂停我的 vim 进程Git Bash 创建一个新的 DOS shell。

如果您在 git bash 中执行其他进程,CTRL-Z 也不会暂停它们。 Vim 解决了这个问题,而是创建了一个 shell 来实现类似的结果。 Vim 是 windows 中不需要 bash 的工具,而 windows 命令提示符必须安装在 windows 机器中。我认为这是 Windows 二进制程序的安全选择。

这是我最不想要的。谷歌搜索没有任何用处(在这个时间点 - 我未来的 YMMV)。这是怎么回事?

我的猜测是 vim 有 CTRL-Z 映射来创建 DOS shell。如果你想创建一个 bash shell,你可以输入:

:!sh

您将在 bash shell 中执行。

【讨论】:

    【解决方案2】:

    我猜这是因为 Windows 没有实现 POSIX 挂起进程 API。我有同样的问题,还没有找到一个通用的解决方案。但是对于特定的常见情况(例如 gvim),一种解决方法是在 PATH 中的某处(例如 /c/bin/gvim)中创建一个脚本

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

    【讨论】:

    • 如果我理解你的话,你正在使用它作为 gvim 的包装器,并且你暗示 ^Z WILL 为包装脚本,即使它不适用于实际的可执行文件?好的,这是有道理的,因为真正的可执行文件是一个 exe 文件。
    • 抱歉,不,^Z 仍然不起作用。当我在 bash 中输入“gvim”时,脚本所做的只是将 gvim 置于后台,这样我就不必 ^Z 来输入下一个命令。基本上,它只需要记住在命令后键入 &。
    • 我不确定这对我有什么帮助。我使用的是 vim,而不是 gvim,所以它在终端中打开。我想要一种方法来暂停它以返回命令行。
    • 嗯,我明白了。在这种情况下,我相信你可能不走运。我唯一能建议的是将“vim”映射到“start vim”,这将在单独的 cmd 窗口中运行 vim,释放 bash 以接收输入。但同样,这并不是您真正想要的。抱歉,我无法提供更多帮助。
    猜你喜欢
    • 2022-06-28
    • 2019-06-05
    • 2018-04-25
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 2011-06-30
    • 2018-07-14
    • 1970-01-01
    相关资源
    最近更新 更多