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


4

私の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]

回答:


2

私が慣れ親しんだ方法でgvimを使用できることがわかった最も迅速な(そしておそらく最も汚い)ソリューションは、.bashrcファイルを変更することでした。

最後に次の機能を追加しました。

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

"$@"シェルから渡された引数を取り、そして&力がバックグラウンドで実行するためにgvimを。

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


ほぼ90%の時間で、これは完全に機能することがわかりました。約10%の時間、フォーカスはgit bashウィンドウに留まるため、bashシェルに大量のvimキーストロークを誤って入力することになります。古いバージョンのgitにはこの問題はありませんでした。他の誰かが影響を受けますか?
ジェフアーウィン

1

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

alias gvim='start gvim'

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

これには、エイリアスを作成するものに対してのみ機能するという機能修正による問題がまだあります。だから、メモ帳例えば、まだブロックあなたのbashあなたが作成しない限り、開始メモ帳のエイリアスを。MSDNブログのこの投稿に基づいて、Windows実行可能ファイルには、GUIアプリケーションであるかどうかをコンソールに伝えるフラグがあるように見えますが、私が見ることができることから、g​​it bashはそのフラグに基づいて区別しませんcmd.exeが行います。GUIフラグの.exeをチェックし、結果に基づいてstartを追加するコマンドを入力するたびに何かを添付できるなら、それでいいでしょう。


エイリアスは関数よりもきれいだと感じるのはなぜですか?これらは実質的に同じものであり、機能はより強力で柔軟です。
Gマン

1
ここでの唯一の目標は独立したプロセスでGvimを起動することであるため、その前にstartコマンドをスローすると、それだけが実行されます。関数を作成するとき、引数を取り、必要のない他のすべてのことを行うことができるコードを書いています。それが必要な場合は、より強力で柔軟性がありますが、コマンドの前にstartという単語を置くだけで十分すぎる場合があります。
ズルチャー

私にとって、これはgvimインスタンスに加えて新しいcmdウィンドウ開始します。理由は何ですか?
カイルストランド

0

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

gvim &

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


1
右、通常のコマンドプロンプトで意図したとおりに機能するため、 '&'を回避できることを望んでいました:/
funseiki
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.