web-dev-qa-db-ja.com

ConEmu:msys2をタブとして呼び出す方法は?

コンソールの2x2グリッドを作成し、それを私のデフォルト設定にしたいのです。つまり、ConEmuを開いたときに、この設定がスタートアップ設定になります。私は以下のようなタスクを書きました:

> * cmd -cur_console:n

* powershell -cur_console:s1TVn

cmd/A/Q/K "C:\ dev\msys64\msys2_Shell.bat" -cur_console:s1THn

ghci.exe -cur_console:s2THn

問題は最後のコマンドにあります。始めたいmsys2ですが、タスクを実行すると、3行目でコンソールが表示されますが、ConEmu内では実行されず、別のウィンドウとして開きます。この構成を修正するにはどうすればよいですか?

また、ConEmuを起動したときにこの構成をデフォルトとして設定するにはどうすればよいのでしょうか。一方、起動すると、単一のcmdコンソールしか取得できません。

9
terett

msys2_Shell.batの中を見て答えを見つけてください。このバッチは、bashシェルの代わりにminttyを実行します。役に立たない。 3行目をbash.exe -l -iへのフルパスに変更します。

conEmuを起動するときに、この構成をデフォルトとして設定するにはどうすればよいですか

ConEmuに「スタートアップ」設定ページがありますね。

5
Maximus

また、MSYS2、MinGW32、MinGW64シェル(v2016-12-07)をConEmu v161206で動作させるのにも問題がありました。

私が見つけた唯一の(ハーフポータブル)作業ソリューションは次のとおりです。

  1. MinGW64シェルのConEmuで、{Shells::mingw-64}という名前の新しいタスクと次のコマンドを作成します。

    set MSYSTEM=MINGW64 & set MSYSCON=conemu64.exe & "%ConEmuDir%\..\..\..\msys64\usr\bin\bash.exe" --login -i -new_console:C:"%ConEmuDir%\..\..\..\msys64\mingw64.exe"
    
  2. MinGW32シェルのConEmuで、{Shells::mingw-32}という名前の新しいタスクと次のコマンドを作成します。

    set MSYSTEM=MINGW32 & set MSYSCON=conemu64.exe & "%ConEmuDir%\..\..\..\msys64\usr\bin\bash.exe" --login -i -new_console:C:"%ConEmuDir%\..\..\..\msys64\mingw32.exe"
    
  3. MSYS2シェルのConEmuで、{Shells::msys2-64}という名前の新しいタスクと次のコマンドを作成します。

    set MSYSTEM=MSYS & set MSYSCON=conemu64.exe & "%ConEmuDir%\..\..\..\msys64\usr\bin\bash.exe" --login -i -new_console:C:"%ConEmuDir%\..\..\..\msys64\msys2.exe"
    

注意:上記の相対パスを変更して、システム上のMSYS2へのパスと一致させます。

ソリューションは、ConEmu実行可能ファイルを明示的に示しているため(x86の場合はConEmu.exeに変更して)、移植性が半分です。

MSYSCON環境変数の値が重要かどうかはわかりません。 MSYS2バッチファイルmsys2_Shell.cmdも設定するため、安全のためにのみ設定しました。

別の方法は、msys2_Shell.cmdバッチスクリプトを使用することです。このアプローチには、msys2_Shell.cmdがWindowsのSTARTコマンドを介して新しいプロセスを生成するという大きな欠点があるため、ConEmuに2つのタブが追加されます。

  1. MinGW64シェルのConEmuで、{Shells::mingw-64}という名前の新しいタスクと次のコマンドを作成します。

    "%ConEmuDir%\..\..\..\msys64\msys2_Shell.cmd" -mingw64 -conemu -new_console:C:"%ConEmuDir%\..\..\..\msys64\mingw64.exe"
    
  2. MinGW32シェルのConEmuで、{Shells::mingw-32}という名前の新しいタスクと次のコマンドを作成します。

    "%ConEmuDir%\..\..\..\msys64\msys2_Shell.cmd" -mingw32 -conemu -new_console:C:"%ConEmuDir%\..\..\..\msys64\mingw32.exe"
    
  3. MSYS2シェルのConEmuで、{Shells::msys2-64}という名前の新しいタスクと次のコマンドを作成します。

    "%ConEmuDir%\..\..\..\msys64\msys2_Shell.cmd" -msys -conemu -new_console:C:"%ConEmuDir%\..\..\..\msys64\msys2.exe"
    

msys2_Shell.cmdは、CMD.EXEから直接使用するためのものであり、PATHにはConEmu64.exe/ConEmu.exeが含まれています。

msys2_Shell -mingw64 -conemu

このコマンドは、ConEmuで新しいMinGW64タブを開きます。

tl; dr:最初のアプローチをお勧めします。これがConEmuでの証拠としてのスクリーンショットです。

Working MSYS2 MinGW64 Shell in ConEmu

17
Florian Wolters