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


7

コンソールの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コンソールしか取得できません。

回答:


3

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

ConEmuの起動時にこの構成をデフォルトの構成に設定するにはどうすればよいですか

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


役に立たない答えですね。
エフゲニーボブキン

14

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

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

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

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

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

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

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

このソリューションは、ConEmu実行可能ファイルを明示的に記述しているConEmu.exeため(x86用に変更するため)、ハーフポータブルです。

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

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

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

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

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

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

msys2_shell.cmd直接使用することが意図されるCMD.EXEと、ConEmu64.exe/ ConEmu.exePATH

msys2_shell -mingw64 -conemu

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

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

ConEmuで動作するMSYS2 MinGW64シェル


この答えは問題ありませんが、必要以上に複雑です。-new_console:C:"%ConEmuDir%\..\..\..\msys64\mingw64.exe"とりわけ、この 部分は必要ありません。
-jstine

私はjstineに同意します、私にとってこれは仕事をしました:set MSYSTEM=MINGW32 & set MSYSCON=conemu64.exe & "c:\msys32\usr\bin\bash.exe" --login -i
karelv

11

すべてのレイヤーをはがすと、実際には非常に簡単です。これは呼び出しと同じように機能します(特定のMSYS2インストール場所に変更するようにしてください)。

set CHERE_INVOKING=1 & set MSYSTEM=MINGW64 & "c:\msys64\usr\bin\bash.exe" --login -i

シェルを設定してPATHを継承することを個人的にお勧めします。

set CHERE_INVOKING=1 & set MSYSTEM=MINGW64 & set MSYS2_PATH_TYPE=inherit & "c:\msys64\usr\bin\bash.exe" --login -i

私のConEmuタスク設定ページは次のようになります。 ConEmu Startup :: Tasksページ

すべてを壊す

MSYS2は、コマンドラインパラメーターではなく、環境変数に従ってシェルを構成することを好みます。この方法でオプションをプログラムに渡すことは、最初は不自然に思えるかもしれませんが、基本的にはこの単純なシリーズに従っています。set VAR=value & set VAR2=value & "c:\path\to\command" [args]

  • CHERE_INVOKING-1に設定されている場合、bashは現在の作業ディレクトリで開始します。それ以外の場合は、ユーザーのホームディレクトリで開始します。これは1、エクスプローラーウィンドウのコンテキストメニューから期待どおりにシェルが動作できるように設定する必要があります。

  • MSYSTEM-使用するMSYS2サブシステム。MSYS、MINGW32、およびMINGW64の3つがあります。MSYSサブシステムにのみに使用すべきpacmanコマンド操作と私は一般的にのみ、それが必要なのは非常に稀な機会に古いSKOOLスタートメニューのアイコンからそれを呼び出します。 MINGW32選択した少数のユーザーはすべてにとって役に立たず、おそらくあなたはすでにあなたが誰であるかを知っています。

  • MSYS2_PATH_TYPE-未設定の場合、MSYSは、PATHMSYSバイナリといくつかのWindowsシステムパスのみを含む最小限の環境を使用し、MSYSTEM=MSYSシェルのみの必須モードです。以下のためMINGWのシェル、使用することをお勧めしますinherit-私が使用してきたMSYS2_PATH_TYPE=inherit年間の問題もなく。

MSYSCON別の回答で言及され、参照されている別の変数がありますmsys2_shell.cmd-無視してください。これはmsys2_shell.cmdバッチファイル内でのみ使用され、bash.exeまたはMSYSシェルの初期化の動作には影響しません。

MSYS2のインストール場所

MSYS2パスはc:\msys64\、MSYS2 Windowsインストーラーのデフォルトのインストール場所であるため、意図的にハードコードされています。これは、使用するには、この場合には意味がありません。%ConEmuDir%それはに比べてだから%PROGRAMFILES%、とMSYS2は、より典型的に相対インストールされているルートディレクトリのハードドライブの。それがあることに注意してください使用しても意味が%ConEmuDir%付属していますMSYS2シェル参照するときにWindows用のGitのことがあるため、されに比べて設置%PROGRAMFILES%

MSYS2のインストール場所を知る簡単な方法はありません。MSYS2によって設定された環境変数もありません。MSYS2 MSYSTEM_HOMEにマシンの環境に何かをエクスポートするオプションがあれば、それはうんざりしませんか?しかし、そうではないので、インストールされている場所を知り、そこにConEmuを指定することは、ユーザーとして完全にあなた次第です。

に関してmsys2_shell.cmd

使用しないでください。バッチファイルの名前が間違っています。msys2_terminal.cmd実際に実行しているのは、シェル用の端末全体の設定であるため、これを呼び出すか、類似する必要があります。これは一般的な用語の間違いです。特にWindowsオペレーティングシステムでは、シェルターミナルが明確に分離されたことはありません。これがどのように機能するかを、Windowsユーザーの観点から説明します。

  • シェル -これはコマンドプロセッサおよびバッチ/スクリプトランナーです。これは、本質的に他のコマンドラインアプリケーションとよく似たコマンドラインアプリケーションです。シェルは、目に見えるウィンドウやキーボード接続さえ必要としません。ファイル、ストリーム、またはその他のデータ入力/出力ソースで完全にバックグラウンドで動作できます。

  • ターミナル -これは、シェルプログラムへのキーボード/マウスインターフェイスを提供するウィンドウアプリケーションです。Windowsでは、多くの場合、コンソールウィンドウと呼ばれます。キーボードコマンドはシェルプログラムにパイプされ、出力はウィンドウ内にスクロールバー、色付きのテキスト、その他の楽しい機能とともに表示されます。

このシナリオでは、端末をConEmuにし、シェルをBASH(mingw64)にする必要があります。したがって、ConEmuでシェルを起動し、シェルのみを起動するようにします。私はしたくないConEmuを開始するminttyを。これらは両方とも端末であるため、ConEmu用とmintty用の2つ目のポップアップウィンドウが表示されます。しかし、それがまさに実行しようとするmsys2_shell.cmdことです。使用しないでください。


1
この答えは私を大いに助けましたが、そこまで到達できませんでした。ANSIカラー処理が壊れていました。vimセットアップを実行できませんでした。 set "PATH=C:\msys64\usr\bin;%PATH%" & set CHERE_INVOKING=1 & set MSYSTEM=MINGW64 & set MSYS2_PATH_TYPE=inherit & set HOME=/c/Users/Me & "c:\Program Files\ConEmu\ConEmu\conemu-msys2-64.exe" "c:\msys64\usr\bin\bash.exe" --login -i -new_console:p これは私のために働いたものです。git for windowsに付属しているセットアップから変更しました。conemu-msys2-64.exeConEmuの現在のバージョンに同梱されているコネクタを使用します。256色で問題なく動作します。
ジョレリ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.