web-dev-qa-db-ja.com

Git for Windows:アンパサンドなしでバックグラウンドでvimを実行します(&)

私のWindowsマシンでは、gVimを実行するとWindowsシェルのgitが拘束されているように見えますが、コマンドプロンプトから実行すると、そうではありません。

シェルを拘束したり、各コマンドの最後に「&」を追加したりせずに、gVim(または実際には他のプログラム)を実行するにはどうすればよいですか?

この問題に関する助けをいただければ幸いです。

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]
4
funseiki

私が慣れている方法でgvimを使用できることがわかった最も速い(そしておそらく最も汚い)解決策は、.bashrcファイルを変更することでした。

その最後に次の関数を追加しました。

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

"$@"はシェルから渡された引数を取り、&gvimをバックグラウンドで実行するように強制します。

より良い解決策があるかもしれないので、この回答を承認済みとしてマークしたくありません(たとえば、msys/vim設定をどこかで台無しにしました)。

2
funseiki

Linuxボックスと同じように機能することがわかった答えは、.bashrcにエイリアスを設定することです。

alias gvim='start gvim'

これはまだ最も理想的な修正ではありませんが、関数を作成するよりも少しすっきりしています。また、実行時または外部ウィンドウを閉じたときに、プロセスID行(例: "[1] 6840")は出力されません。

これには、エイリアスを作成したものに対してのみ機能するという関数修正の問題がまだあります。したがって、notepadは、start notepadを作成しない限り、bashをブロックします。エイリアス。に基づく MSDNブログのこの投稿 Windows実行可能ファイルにはGUIアプリケーションであるかどうかをコンソールに通知するフラグがあるようですが、私が見る限り、gitbashはに基づいて区別されませんそのフラグは、cmd.exeと同じ方法で実行されます。入力されたすべてのコマンドにGUIフラグの.exeをチェックする何かを添付し、結果に基づいてstartを先頭に追加できる場合は、行ってもいいです。

1
Zurcher

&を使用して、bashからバックグラウンドで任意のプログラムを実行できます。

gvim &

Gvimはほとんどのプログラムとは異なり、通常は&を必要とせずにバックグラウンドに配置されます。フォアグラウンドで実行するには、通常、-fオプションで開始する必要があります。なぜgvimがWindowsのbashからそのように動作しないのかわかりません。

0
garyjohn