iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 29
1

DAY 29 整合式終端機 (Part 7)

常見問題 (Part 1)

我能夠在整合式終端機使用 Windows Subsystem for Linux 嗎?

當然可以!你可以選擇使用 Windows Subsystem for Linux (WSL) 的 Bash Shell 作為你的預設終端機。如果你已經有透過 Windows 功能啟用了 WSL,你就可以從「終端機:選擇預設 Shell」的指令中選擇 WSL Bash。你可以從 Developing in WSL 找到更多有關 WSL 及 Remote - WSL 擴充套件的更多說明。

為什麼我有些 VS Code 的快捷鍵當聚焦在整合式終端機時不能使用?

目前整合式終端機會把很多快捷鍵截留下來處理,所以 VS Code 就不會對這些快捷鍵產生反應。像是用來打開「尋找及執行所有命令」的快捷鍵 和在 Linux 和 Windows 中用來快速開啟檔案的 都會在這情況下失效。整合式終端機因為是純鍵盤的環境,所以它有必要把很多快捷鍵截留下來處理。你可以透過 terminal.integrated.commandsToSkipShell 的設定來避免快捷鍵被終端機截留下來。

在 Windows 10 上的整合式終端機為什麼會以異常代碼 1 結束?

這通常是因為 VS Code 被使用相容模式執行,通常你在升級你的 Windows 後,VS Code 就有可能被開啟相容模式。你可以對 VS Code 執行檔按右鍵進到內容中,並在相容性的分頁中取消「以相容模式執行這個程式」。

我可以在 Windows 中的整合式終端機使用 Cmder 的 Shell 嗎?

當然可以,要在整合式終端機中使用 Cmder,你需要在 settings.json 中透過以下的設定來調整:

"terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\cmd.exe",
"terminal.integrated.shellArgs.windows": ["/K", "C:\\cmder\\vendor\\init.bat"]

更多詳細的設定你可以參考 Cmder 的維基百科

在 macOS 中的 Powershell 一直在抱怨 -l 的參數,該如何修正?

當你在 macOS 的整合式終端機中指定使用 Powershell 時,你會遇到這個錯誤,它會一直在抱怨一個 -l 的參數,因為在 Unix-like 的 Shell(如:bash, zsh…)中,需要加上這個參數,才會讓 Shell 像一個登入的 Shell 一樣套用使用者的設定檔。要修正這個錯誤,你必須透過 terminal.integrated.shellArgs.osx 的設定來把預設的 -l 參數覆蓋如下:

"terminal.integrated.shellArgs.osx": []

在 Windows 中我要如何把預設的整合式終端機改回 Powershell?

如果你在 Windows 中希望把整合式終端機預設的 Shell 改回 Powershell,你可以透過使用者設定移除 terminal.integrated.shell.windows

舉例來說,如果你曾經把預設的 Shell 設定成 bash,你將會看到使用者設定有像是這樣的設定值:

"terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\bash.exe",

你只要把這行設定移除,就會回去使用預設的選項,或是你也可以指定成其他的 Shell 的執行檔完整路徑。

在 64 位元的 Windows 中 32 位元的 VS Code 為什麼不能執行整合式終端機?

最簡單的修正方法就是改用 64 位元的 VS Code。如果你有非用 32 位元 VS Code 的理由,那你可以考慮把 Shell 的路徑改用 sysnative 的路徑(而非使用 System32):

"terminal.integrated.shell.windows": "C:\\WINDOWS\\sysnative\\cmd.exe",

為什麼 Cmd+K/Ctrl+K 沒有清空終端機?

快捷鍵 預設可以把終端機的內容清空,但是很容易會因為安裝了其他擴充套件或是用戶的快捷鍵導致這個功能失效。在 VS Code 中,快捷鍵設定的優先順序為:「使用者」>「擴充套件」>「預設值」。如果要修正這個問題,你可以在你的使用者快捷鍵設定 keybindings.json 的後面直接新增以下的設定:

// macOS
{ "key": "cmd+k", "command": "workbench.action.terminal.clear", "when": "terminalFocus" },

// windows
{ "key": "ctrl+k", "command": "workbench.action.terminal.clear", "when": "terminalFocus" },

明天待續…


上一篇
DAY 28 整合式終端機 (Part 6)
下一篇
DAY 30 整合式終端機 (Part 8)
系列文
精通 Visual Studio Code31

尚未有邦友留言

立即登入留言