1章 ペイン分割コマンド
ステップ①上下分割
wt -w 0 sp -H
ステップ②上下分割 → 左右分割
wt -w 0 sp -H `; sp -V
ステップ③上下分割 → 左右分割 → フォーカスを左に移動させる
wt -w 0 sp -H `; sp -V `;mf left
ステップ④上下分割 → 分割先に文字を送る
wt -w 0 sp -H Powershell.exe -noexit echo "移動"
2章 分割後のペインに、元ペインから文字を送りたい(Powershell)
ペイン分割と同時ならば、ステップ④のように他のペインに文字を書き込むことができるが、その一回だけだ。分割済みのペインに、改めて新しい文字を書き込むにはとうしたら良いのだろう。
お手本のLinuxの「端末」では、どうやっている?
Linuxは、コンピュータに接続した周辺機器(例えばプリンター)をファイルシステム上の「ファイル」のように扱う「デバイスファイル」が存在する。(UNIXにも)デバイスファイルは、ファイルの読み書きと同じ手順で、データの入出力や制御をできる。
またLinuxには「WindowsTerminal」の見本となった「端末=ターミナル」が存在するが、この「端末」にも「デバイスファイル」も存在する。Linuxで「端末」の「デバイスファイル」名を出力するコマンドは、「ps」となる。
ps
「ps」と入力した場合の出力結果は以下となる。
/dev/pts/0
そして端末が2つある時、もう一つの端末名は以下と出力される。
/dev/pts/1
結論から言えば、片方の端末から、もう一つの端末に表示するコマンドは以下となる。この方法はWindowsTerminalでは出来ない。
echo aho > /dev/pts/1
Windowsではどうするのか?
Windowsにも、Linuxと同じようなデバイスファイルの仕組みはある。しかしデバイスファイルを利用した、コマンドによるペインから別のペイン(端末)へのリアルタイム出力が出来ない。もしかして、存在するかもしれないが、私には見つけられなかった。
WindowsTerminalでの手段
思いついたのは以下の手段だ。
(1) 空の「テキストファイル.txt」を作成する。
(2)「入力用ペイン」から「出力用ペイン」を作成する。
(3)「出力用ペイン」には"「テキストファイル.txt」を「監視」し、変更あれば「抽出」して表示する"設定にする。
(4)「入力用ペイン」から「テキストファイル.txt」に「書込」する。
いざ、やってみよう。
環境
- Windows10
- テキストファイルにはutf-8で出力する。(標準はShift-JIS)
- WindowsTerminalを利用する。
- Powershell 7.2を利用する。
(1)空の「テキストファイル.txt」を作成する。
New-Item テキストファイル.txt -type file
(2)「入力用ペイン」から「出力用ペイン」を作成する。
(3)「出力用ペイン」には"「テキストファイル.txt」を「監視」し、変更あれば「抽出」して表示する"設定にする。
は以下の一行にまとめられる。
wt -w 0 sp -H powershell.exe -noexit get-content ./テキストファイル.txt -wait -Encoding utf8
(4)「入力用ペイン」から「テキストファイル.txt」に「書込」する。
echo 日本チャチャチャ >> ./テキストファイル.txt
結果
3章 分割後のペインに色🟥🟨🟦を付けたい。
Powershell 7.2では、単純に以下と入力すればよい
echo 1:`e[31m赤`e[0m2:`e[32m緑`e[0m > テキストファイル.txt
出力結果
しかし、Powershell 5.1(=Windows PowerShell)では、単純にはいかない。
PowerShell 5.1 ではエスケープシーケンスの「`e」がまだ使えない為だ。
ではどうするか? 単純な話で「エスケープ=脱出」しないで、正々堂々「27番目の制御文字ESC」を入力すればよい。ここで注意なのは以下の "^[" は "^" と "[" ではなく、「27番目の制御文字ESC」です。入力方法は、少し長くなるので他のサイトを検索して下さい。(エスケープ説明)
※ちなみに私は「27番目の制御文字ESC」を秀丸で入れました。ほかにサクラエディタや、NotePad++で入力する方法があるようです。
考察
2022年4月時点でのWindows10や、最新のWindows11では、Powershell 5.1(=Windows PowerShell)が標準実装であり、Powershell 7.2は入ってない。その為、エスケープシーケンスは、会社のパソコンで使う為には少々使い辛い。
(私、機械系エンジニアだし。黒い画面出してているだけで変な人扱いだし)
どうしたものか思案中。
参考リンク
Windows ターミナルに対するコマンド ライン引数を使用する
Windows Terminalをコマンドで実行し、更に、その中でコマンド実行。
Windows Terminal 上でwebpack-dev-serverとdocker-composeを同時に起動し別のペインに表示