[技巧] 用 VSCode Terminal 連到遠端 Linux 但是有些組合鍵按不了?

如果你想用 VSCode Terminal 取代傳統用 PuTTY, MobaXterm 等 SSH 工具,第一個會遇到的障礙就是像是 Ctrl + K , Ctrl + E , Ctrl + V 有些組合鍵都沒辦法用。 "不能用"的原因可能有幾個: VSCode 傳送的 ASCII code 和 PuTTY 傳送的 ASCII code 不一樣 VSCode 的組合鍵被 VSCode 上面的東西給搶先攔截了 (像是 Ctrl + E 會開啟 Go to file... 功能) 再來也有可能不是 VSCode 的問題,是 stty 或 SSH 端的程式沒設置好 按鍵傳送的 ASCII Code 和想像的不一樣 像是我們開 PuTTY 的設定 Terminal -> Keyboard 就會發現裡面有設置像是 Backspace 按下去應該會送出什麼 ASCII code: 預設是送出 127 ( ^?, 0x7f ),但是有可能會出於各種因素設置到 Control-H (也就是 Ctrl + H, ^H, 8, 0x8 )。但 VSCode 預設設定是右邊的。所以如果你習慣的設定剛好就和 VSCode 預設不一樣的話就會發現 VSCode terminal 中 backspace 按下去怎麼不是刪除文字而是會冒出一些怪怪的符號、或是一些不該有的行為。 按鍵被 VSCode 搶先攔截 就算你在 VSCode terminal 按 Ctrl + E,VSCode Go to file... 的功能就會搶先跳出來,terminal 根本沒有機會知道你按了什麼: 其他還有很多按鍵通通會觸發 VSCode 的功能。 別讓 VSCode 攔截按鍵 你可以在 settings.json 裡面用 " terminal.integrated.commandsToSkipShell " 來關閉哪些 VSCode commands 不要使用,記得在前面加上一個 "-" 字元,它自然就會把按鍵乖乖傳給 shell: { "terminal.integrated.commandsToSkipShell": [ "-editor.action.toggleTabFocus...