Windows Terminal を使ってみる
WinGet を使うようになったので、利用してみる。
インストール
winget install --id Microsoft.WindowsTerminal -e
scope は指定しなかった。管理者でログオンするように言われなかったので user になっていると思う。
とくに引っかかるところはなかった。32bit Home でもインストールできた。
操作
タブ操作などは VSCode ぽい感じ。
F11
でフルスクリーンになる(が、tmux とか使っていないとステータスバーがなくて使いにくいかな)。
そして MarkMode は結構うれしい。
コマンドパレットがある。が、絞り込みは日本語でないと引っかからないコマンドもある(マークモード
はダメだった)。
クリップボードはターミナル側へいわゆる日本語を貼り付けると文字化けするときがある。デフォルトの Powershell はコマンドライン上でやると化ける。この辺はクリップボードというよりもロケールとかの設定かな。SSH 接続したときに LANG とか設定しないと少しあやしい。
VSCode で Remote に接続しているときに外部ターミナルにする
外部ターミナルに wt.exe
を指定した場合、ローカル側のシェルなどが開く。
リモートで開くには拡張機能が必要。
Dev Container はローカルに Docker が必要。が、Windows に Docker はいれてないので試していない。
Codespaces はサポート外で利用できない。
以下、CodeSandbox との組み合わせの場合。
CodeSandbox 拡張機能から普通に接続している場合は、SSH 接続で開くことを確認できた。ただし、環境変数(PATH
や VSCODE_IPC_HOOK_CLI
など)は設定されていないので code
コマンドを使ったりはできない。
環境変数については、Dev Containers の方では .env 的なものを作って回避している例もある。が、これはちょっと厳しいかな。
なお、SSH で接続できる状態になっていれば拡張機能を使わなくても、ssh -F ~/.ssh/csb/config
で CodeSandbox の VM のホスト名を指定することで接続できる(ホスト名は VSCode の Recent か ~/ssh/csb/config
の中身を見ればだいたい見当が付く)。
Dev Cotantainers は無理して Podman を使っている場合はダメそう。ローカルに Podman をインストールして podman-docker
ぽい設定にして試してみたがエラーになる。対応としては、SSH で接続した状態から podman exec
を使うことはできる(めんどうだし、環境変数の問題もある)。
Dev Container の場合は tmux を入れてあるので integrated の方でセッション作っておいて external から attach すれば環境変数を引き継げる、という手もなくはない。
こんな感じにはできる。が、VSCode のエディター(タブ)上で integrated なターミナルを開いても似たような感じなので、使うかは悩みとどころ。あと、ターミナルの中で code
コマンドを使ったときにフォーカスが切り替わらないのもやりにくい。
設定
キーバインドは Profile 別に設定できない?
とりあえず少し変更した。
- キーバインドで貼り付け
ctrl
+v
を削除、Vim の範囲選択とあたる - ベルはすべてオフ
あとは、配色を変更した。
Vim のカーソルの形
SSH で接続して Vim を使ったときに、カーソルの形(ポインター)が固定なのが妙に気になった。
検索すると対応法を記載されている記事が見つかる。
Windows Terminal への設定ではなく Vim 側の設定になるので、下記のようになる。
- Windows Terminal から利用する各 Vim(
.vimrc
)に設定しないと適用されない - 設定してあれば他のターミナル環境(VSCode の integrated など)でも適用される
他のターミナルではボックス固定に慣れているので、全体的には設定したくない(試してみたら違和感バリバリだった)。Windows Terminal から接続することが多そうな Dev Containers 用の .vimrc
にとりあえず設定。