iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 30
1

DAY 30 整合式終端機 (Part 8)

常見問題 (Part 2)

為什麼整合式終端機在啟動的時候 nvm 總是會出現 prefix 選項的錯誤?

nvm (Node Version Manager) 的使用者在啟動整合式終端機的時候通常會看到以下錯誤訊息:

nvm is not compatible with the npm config "prefix" option: currently set to "/usr/local"
Run `npm config delete prefix` or `nvm use --delete-prefix v8.9.1 --silent` to unset it

這個問題通常都只有 macOS 的使用者才會遇到,而且使用外部終端機開啟的時候不會有這個問題,常見的可能原因為:

  • npm 是使用另一個 node 來全域安裝的,這個另外的 node 可能位於 $PATH 環境變數中的其他資料夾中。(例如:/usr/local/bin/npm
  • VS Code 為了取得在環境變數中 $PATH 中的開發工具,它會在啟動時同時啟動一個 bash shell,這代表說 ~/.bash_profile 已經被執行過了,當你開啟整合式終端機時,它又會執行一個 login shell,這可能會造成 $PATH 中的路徑出現不正確的順序。

要解決這個問題,你必須找到有問題的 npm 的安裝路徑,並且把它連同有問題的 node_modules 一起移除,你可以透過尋找 nvm 的啟動指令,並且在指令執行前先執行 which npm 來找到有問題的 npm 位置所在。

只要你找到了有問題的 npm 路徑,你就可以如下的指令來解析 symlink 並找到有問題的 node_modules:

ls -la /usr/local/bin | grep "np[mx]"

這個指令將會告訴你這個 symlink 實際上會指向何處:

... npm -> ../lib/node_modules/npm/bin/npm-cli.js
... npx -> ../lib/node_modules/npm/bin/npx-cli.js

然後你就可以透過移除這些檔案並重開 VS Code 來解決這個錯誤:

rm -R /usr/local/bin/npm /usr/local/lib/node_modules/npm/bin/npm-cli.js
rm -R /usr/local/bin/npx /usr/local/lib/node_modules/npm/bin/npx-cli.js

我可以在整合式終端機中使用 Powerline 字型嗎?

當然可以!你可以透過 terminal.integrated.fontFamily 設定來指定使用 Powerline 字型。

"terminal.integrated.fontFamily": "Meslo LG M DZ for Powerline"

這裡需要注意的是,你所指定的名字必須是字型家族的名稱,而不是該字型家族中的某個子字型,因為你如果指定成了該字型家族中的某個子字型(如:Meslo LG M DZ Regular for Powerline),這個子字型是 Regular,所以你的全部文字就都只會是 Regular 的粗細!

當我在 macOS 上使用 zsh 時,我該怎麼使用 Ctrl+Left/Right 來跳單字?

在 bash 中,你預設可以使用 的快捷鍵來讓你的游標跳單字,但是在 zsh 中你需要透過修改以下的設定才能達到一樣的效果:

{
  "key": "ctrl+left",
  "command": "workbench.action.terminal.sendSequence",
  "args": { "text": "\u001bb" }
},
{
  "key": "ctrl+right",
  "command": "workbench.action.terminal.sendSequence",
  "args": { "text": "\u001bf" }
}

我要如何修正 ConnectNamedPipe failed: Windows error 232 的錯誤?

這個問題通常是由防毒軟體所引起的,防毒軟體會禁止 winpty 程式來擷取 pty 的輸入輸出,如果要解決這個錯誤,你需要把以下的程式加到防毒軟體的排除清單內:

<install_path>\resources\app\node_modules.asar.unpacked\node-pty\build\Release\winpty-agent.exe

為什麼我的終端機會出現一個彩色的三角形或是全黑的長方形?

終端機在某些環境下會出現一些渲染問題,例如你有可能會看到一個巨大的彩色三角形,而看不到文字,這通常是因為驅動程式或是顯示卡所造成的問題,而且在 Chromium 中也會有一樣的問題,你可以在啟動 code 的時候加上 --disable-gpu 的參數,或是透過修改 "terminal.integrated.rendererType": "dom" 設定來避免使用 <canvas> 的方式來渲染終端機。


上一篇
DAY 29 整合式終端機 (Part 7)
下一篇
Day 31 完賽心得
系列文
精通 Visual Studio Code31

尚未有邦友留言

立即登入留言