notebook

都内でWEB系エンジニアやってます。

Windows Terminalでつないだサーバのキーバインドが効かない場合があるときのメモ

  • 前提の環境
Windows Terminal Preview
バージョン: 1.5.3142.0

Windows Terminalを使っていて普段の開発は

  • WSLでtmuxを起動して開発
  • VagrantでVMを起動+WindowsTerminalからSSH接続してtmuxで開発

といった感じで行っている

自分はtmuxのpane間移動にCtrl+Alt+h,Ctrl+Alt+j,Ctrl+Alt+k,Ctrl+Alt+lでプレフィックスキーを使用せずvimの操作ライクに移動できるように設定して使っていた

が、いつの間にか上記のtmuxキーバインドが効かない状態になっていた

色々調べた結果次のような結果となった

  • Ubuntu(WSL) → 効く
  • SSH系(Vagrant) → 効かない

該当のプロファイル設定は下記(sshの設定は別途行っている)

{
    "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
    "hidden": false,
    "name": "Ubuntu",
    "commandline": "wsl.exe ~ -d Ubuntu",
    "source": "Windows.Terminal.Wsl"
},
{
    "guid": "{a46fc42c-6e20-426c-bfc0-f06d6f3cd1e8}",
    "hidden": false,
    "name": "local3096",
    "icon": "C:\\Users\\hoge\\icon\\vagrant.ico",
    "commandline": "ssh -Y -X local3096"
},

最初tmuxやzshなどの設定周りで問題が出たのかなと思っていたがtmuxやzsh周りの設定ではなさそう

ということでWindowsTerminalか、その周辺で問題がありそう

キーバインドが効く場合もあったので切り分けのために色々試した結果次のような結果となった

  • GitBashからssh → 効いた
  • コマンドプロンプトからssh → 効かない

ということで

結果的にはWindows Terminalのprofilesで次の差分を適用することで解決した

- "commandline": "ssh -Y -X local3096"
+ "commandline" : "C:\\Program Files\\Git\\bin\\bash.exe -c 'ssh -Y -X local3096'"

Windows環境からのsshで接続を行う環境でキーバインドを取られてしまっていたという解釈で良いのかな?

コマンドプロンプト、PowerShellからsshでVMにログインした場合はキーバインドが効かなかったので間違いなさそうだけどそれ以上追う気にならなかったのでどこかの誰かのお役に立てればくらいのスタンスでメモを残しておく