Git for Windows:在后台运行 vim,无需使用与号 (&)

Git for Windows:在后台运行 vim,无需使用与号 (&)

在我的 Windows 机器上,运行 gVim 似乎会绑定 Windows shell 的 git,而如果我从命令提示符运行,则情况并非如此。

我怎样才能运行 gVim(或任何其他程序),而不必绑定 shell 并在每个命令末尾添加“&”?

任何关于此问题方面的帮助都将非常感激。

Git Bash:

$ gvim hello.txt
[Terminal is now blocked]
[Hit ctrl+c or close gvim, terminal takes input]
$ 

Windows 命令提示符:

> gvim hello.txt
> [ Can still access cursor and execute commands]

答案1

我发现最有效的答案是在我的 Linux 机器上设置一个别名在你的 .bashrc 中:

alias gvim='start gvim'

这仍然不是最理想的解决方案,但我觉得比创建函数更简洁一些。此外,当您运行它或关闭外部窗口时,它不会打印进程 ID 行(例如:“[1] 6840”)。

这仍然有函数修复的问题,即它只适用于你创建别名的东西。所以记事本例如,除非你创建一个启动记事本别名。基于MSDN 博客上的这篇文章看起来 Windows 可执行文件有一个标志,可以告诉控制台它是否是 GUI 应用程序,但据我所知,git bash 不会像 cmd.exe 那样根据该标志进行区分。如果你可以将某些东西附加到输入的每个命令中,它将检查 .exe 是否有 GUI 标志,并在前面添加开始根据您的结果,您就可以开始了。

答案2

我发现,能够以我习惯的方式使用 gvim 的最快(也可能是最肮脏的)解决方案是修改 .bashrc 文件。

我在它的末尾添加了以下函数:

gvim()
{
    /path/to/gvim.exe "$@" &
}

接受"$@"从 shell 传递的参数,并&强制 gvim 在后台运行。

我不想将此答案标记为已接受,因为可能有更好的解决方案(例如,我在某处搞砸了我的 msys/vim 设置)。

答案3

您可以使用以下命令从 bash 在后台运行任何程序&

gvim &

Gvim 与大多数程序不同,它通常会将自己置于后台,而无需&。要将其在前台运行,通常必须使用 选项启动它-f。我不知道为什么 gvim 在 Windows 上的 bash 中没有表现出这种行为。

相关内容