終端機個人化、實用工具推薦

終端機個人化、實用工具推薦

jimchen5209

前言

想必大家都對終端機不陌生了,他就是一個黑底白字的文字介面,像這樣:

但是你有想過他可以長這樣嗎

以下就來介紹一些在終端機上實用的個人化插件和小工具


Windows

👉 總之先把這個視窗跟 CMD 換掉🤣

Windows 終端機

簡介

Windows 終端機是近期微軟新推出的終端機應用程式,為打破傳統命令提示字元而生。提供多設定檔切換和高度個人化,讓終端機不再是一個死板的黑白介面。

以下是微軟在一開始(2019)釋出的概念影片,雖然現在還是有點差異:

💡 官方文件介紹:

Windows 終端機概觀


安裝

Windows 11 內建 Windows 終端機,除非你把他刪了。

Windows 10 或 Windows 11 但已經刪掉的朋友們,可以透過以下連結安裝:

Get Windows Terminal from the Microsoft Store


設定及使用

  • 啟動 Windows 終端機

    到開始功能表尋找「終端機」即可啟動 Windows 終端機

    💡 For Windows 11:

    可以透過對開始按鈕按右鍵的選單啟動 Windows 終端機

  • 設定 Windows 終端機

    透過這個頁面設定終端機行為和個人化,以下挑幾個重點設定介紹:

    ⚠️ 調整完設定記得按右下角的「儲存」

    1. 透過新分頁右邊的箭頭開啟設定頁面

    2. 設定預設設定檔

    3. 將預設終端機軟體設定成 Windows 終端機

      💡 這曾經是 Windows 11 專屬的設定,但現在 Windows 10 也能用了

      日後其他軟體要開終端機也會使用 Windows 終端機開啟

    4. 選擇終端介面的主題

      淺色主題
      淺色主題

      深色主題
      深色主題

    5. 讓標題列變半透明

      ⚠️ 儲存設定後,需重開終端機才會生效

    6. 設定檔可以個別設定不同環境的終端軟體(如:CMD、PowerShell、Git Bash 等等)、外觀、圖示以及其他行為設定

      💡 「預設值」設定會套用到所有設定檔

      1. 文字設定:設定字型、文字大小等基本設定

      2. 背景影像:終端機的背景(對,可以終端機上放背景圖)

      3. 透明度:可以讓終端機變半透明

    💡 其他個人化功能可以參考以下文件:

    Windows 終端機概觀


補充:讓 Git Bash 成為 Windows Terminal 的一部份

對的 Windows Terminal 也可以開 Git Bash,不過他預設是關的,因此大部分人都在安裝 Git 的時候忽略掉,此時可以透過重新安裝(不需要把原本的刪掉)將選項補開回來,也可以順便更新一下😃

💡 Git for Windows 下載

Git - Downloads

  1. 直接執行安裝檔,會出下以下畫面,請把 Only show new options 取消勾選,否則他會直接跳過選項直接安裝,接著按下 Next

  2. 在下一個頁面,將 (NEW!) Add a Git Bash Profile to Windows Terminal 勾起來,也可以順便 Review 一下其他設定(例如自動更新、預設 Branch 名稱、預設 Git 編輯器等)如果沒有要調整其他設定,可以把 Only show new options 再次勾起來,跳過剩餘選項(但我還是推薦 review 一下),最後按 Install 安裝

  3. 再次開啟 Windows Terminal,就會多出 Git Bash 的 Profile 了


PowerShell 7

簡介

PowerShell 7 是微軟新推出的終端機,也是微軟第一個跨平台的 Shell,能提供比 CMD 更好的終端機使用體驗。

💡 官方文件介紹

什麼是 PowerShell? - PowerShell

⚠️ 別跟這個 PowerShell 搞混了,這是舊版的


安裝


設定為 Windows 終端機預設設定檔

安裝完 PowerShell 後,開啟 Windows 終端機會自動新增 PowerShell 的設定檔,此時就可以將他設定成預設的終端機了


設定為 Visual Studio Code 的預設終端機

  1. 啟動終端機,在新增終端機右邊的選單選擇預設設定檔

  2. 選擇 PowerShell (pwsh.exe


自訂終端機提示 - oh-my-posh

安裝完的 PowerShell 終端提示是長這樣,但是長的跟我一開始提到的樣子還是不太一樣。

這時候就要開始介紹一個插件叫做 oh-my-posh,他可以將終端提示個人化,內建許多不同的主題,也可以自訂主題。

  1. 安裝 oh-my-posh

    透過 winget 安裝

    1
    winget install JanDeDobbeleer.OhMyPosh -s winget
  2. 啟用 oh-my-posh

    1. 使用文字編輯器(例如:VSCode)開啟 PowerShell 設定檔

      1
      code $profile
    2. 加上以下指令

      1
      oh-my-posh init pwsh | Invoke-Expression
    3. 重開 PowerShell,如果他長得像下面這個畫面就表示有成功

      ⚠️ 此時建議將整個終端軟體如 Windows Terminal 重啟,以重新載入環境變數

      💡 你可能注意到了終端機啟動緩慢的警告,此為載入 oh-my-posh 的正常現象,通常不會超過 2000 ms

  3. 安裝字型

    眼尖的應該都發現了,為啥出現了一堆方框?

    oh-my-posh 和 Powerlevel10K 是基於 Nerd Font 設計的應用程式。請參閱 Nerd Font 安裝字型,安裝並設定完成後,如果提示跟下方圖示的長一樣,代表安裝成功。

  4. 設定主題

    1. 在 PowerShell 輸入以下指令取得內建主題列表

      1
      Get-PoshThemes

    2. 選好主題後,記下他的名字,到最底下提供的路徑

      💡 Windows Terminal 可以透過 Ctrl + 點一下路徑直接使用檔案總管開啟

    3. 找到你選擇的主題,複製完整路徑

      💡 Windows 11 的複製路徑按鈕在右鍵選單內

    4. 使用文字編輯器(例如:VSCode)開啟 PowerShell 設定檔

      1
      code $profile
    5. 將剛剛的

      1
      oh-my-posh init pwsh | Invoke-Expression

      取代成

      1
      oh-my-posh init pwsh --config <路徑> | Invoke-Expression

      其中將 <路徑> 取代成剛剛複製的路徑即可

      💡 我在最一開始的主題不是內建的,是根據 Powerlevel10K 主題修改過的

      p10k.omp.json
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      75
      76
      77
      78
      79
      80
      81
      82
      83
      84
      85
      86
      87
      88
      89
      90
      91
      92
      93
      94
      95
      96
      97
      98
      99
      100
      101
      102
      103
      104
      105
      106
      107
      108
      109
      110
      111
      112
      113
      114
      115
      116
      117
      118
      119
      120
      121
      122
      123
      {
      "$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
      "blocks": [
      {
      "alignment": "left",
      "segments": [
      {
      "background": "#303030",
      "foreground": "#eeeeee",
      "properties": {
      "windows": "\ue70f"
      },
      "style": "plain",
      "template": " {{ if .WSL }}WSL at {{ end }}{{.Icon}}<#707070> \ue0b1</>",
      "type": "os"
      },
      {
      "background": "#303030",
      "foreground": "#00afff",
      "properties": {
      "style": "letter"
      },
      "style": "plain",
      "template": " {{ .Path }} ",
      "type": "path"
      },
      {
      "background": "#303030",
      "foreground": "#5fd700",
      "properties": {
      "ahead_color": "#00afff",
      "behind_color": "#e91e63",
      "branch_icon": "\ue725 ",
      "fetch_stash_count": true,
      "fetch_status": true,
      "fetch_upstream_icon": true
      },
      "style": "plain",
      "template": "<#707070>\ue0b1 </>{{ .HEAD }} {{ .BranchStatus }}{{ if .Working.Changed }} \uf044 <#d7af00>{{ .Working.String }}</>{{ end }}{{ if and (.Staging.Changed) (.Working.Changed) }}{{ end }}{{ if .Staging.Changed }} \uf046 <#00afff>{{ .Staging.String }}</>{{ end }}{{ if gt .StashCount 0}} \uf692 {{ .StashCount }}{{ end }}{{ if gt .WorktreeCount 0}} \uf1bb {{ .WorktreeCount }}{{ end }} ",
      "type": "git"
      },
      {
      "background": "#303030",
      "foreground": "#e91e63",
      "properties": {
      "root_icon": "#"
      },
      "style": "plain",
      "template": "<#707070>\ue0b1 </>\uf0e7 ",
      "type": "root"
      },
      {
      "background": "transparent",
      "foreground": "#303030",
      "style": "plain",
      "template": "\ue0b0 ",
      "type": "text"
      }
      ],
      "type": "prompt"
      },
      {
      "alignment": "right",
      "segments": [
      {
      "background": "#303030",
      "foreground": "#008000",
      "foreground_templates": [
      "{{ if gt .Code 0 }}#e91e63{{ end }}"
      ],
      "leading_diamond": "\ue0b2",
      "properties": {
      "always_enabled": true,
      "display_exit_code": true
      },
      "style": "diamond",
      "template": " {{ if gt .Code 0 }}\u2718 {{ .Meaning }}{{ else }}\u2714 {{ end }}<#707070>\ue0b3</>",
      "type": "exit"
      },
      {
      "background": "#303030",
      "foreground": "#00afaf",
      "properties": {
      "display_mode": "environment"
      },
      "style": "plain",
      "template": " \ue235 {{ if .Error }}{{ .Error }}{{ else }}{{ if .Venv }}{{ .Venv }} {{ end }}{{ .Full }}{{ end }} ",
      "type": "python"
      },
      {
      "background": "#303030",
      "properties": {
      "style": "round",
      "threshold": 500
      },
      "style": "plain",
      "template": " {{ .FormattedMs }} <#707070>\ue0b3</>",
      "type": "executiontime"
      },
      {
      "background": "#303030",
      "foreground": "#d7af87",
      "style": "plain",
      "template": " {{ if .SSHSession }}\uf817 {{ end }}{{ .UserName }}@{{ .HostName }} <#707070>\ue0b3</>",
      "type": "session"
      },
      {
      "background": "#303030",
      "foreground": "#5f8787",
      "properties": {
      "time_format": "15:04:05"
      },
      "style": "plain",
      "template": " {{ .CurrentDate | date .Format }} \uf017 ",
      "type": "time"
      }
      ],
      "type": "rprompt"
      }
      ],
      "console_title_template": "{{if .Root}}# {{end}}{{.Folder}}",
      "version": 2
      }

      自訂方式我就不細說了,有興趣的可以自行參考自訂主題文件:

      General | Oh My Posh

      💡 關於 Python 虛擬環境

      有些主題(如我在上面提供的自訂主題)有提供虛擬環境提示,可能會和預設的虛擬環境提示重複,像這樣:

      解決方式為開啟 PowerShell 設定檔

      1
      code $profile

      加入以下指令以停用預設虛擬環境提示

      1
      $env:VIRTUAL_ENV_DISABLE_PROMPT = 1

      效果如下


其他插件及設定

  • posh-git

    posh-git 是讓 PowerShell 和 Git 整合的插件,以下是兩個主要功能:

    1. 提供 git 的狀態顯示

    2. 提供 git 指令自動完成

    https://github.com/dahlbyk/posh-git

    安裝方式:

    1. 開啟 PowerShell,輸入

      1
      Install-Module posh-git

      安裝時會出現以下的警告,表示從來源安裝模組是有風險的,按下 Y 接受

    2. 使用文字編輯器(例如:VSCode)開啟 PowerShell 設定檔

      1
      code $profile
    3. 加上以下指令

      1
      Import-Module posh-git
    4. 如果你有安裝 oh-my-posh,可以再加上以下指令開啟整合

      1
      $env:POSH_GIT_ENABLED = $true
    5. 重啟 PowerShell 就會啟用

  • 歷史記錄搜尋

    可快速執行之前執行過的指令,加速執行重複動作時的流程

    設定方式

    1. 使用文字編輯器(例如:VSCode)開啟 PowerShell 設定檔

      1
      code $profile
    2. 加上以下指令

      1
      2
      3
      Set-PSReadLineOption -HistorySearchCursorMovesToEnd
      Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
      Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward
    3. 重啟 PowerShell 就會啟用

  • 實現和 Linux 一樣的 Ctrl+D 離開

    設定方式

    1. 使用文字編輯器(例如:VSCode)開啟 PowerShell 設定檔

      1
      code $profile
    2. 加上以下指令

      1
      Set-PSReadlineKeyHandler -Chord Ctrl+d -Function DeleteCharOrExit

Mac / Linux

Zsh & oh-my-zsh

簡介

Z shell (以下簡稱 Zsh)是一個終端機應用程式,改善了原始終端機(sh)的許多功能,並加入 Bash、ksh、tcsh 的某些功能。

ZSH - THE Z SHELL

而由社群維護的 oh-my-zsh 則是強化了 Zsh 。除了強化 Zsh 的許多功能,也且內建許多主題和插件,當然也可以額外加入其他主題和插件。


安裝 Zsh

  • 大部分的套件管理工具均提供 Zsh ,透過套件管理工具安裝 Zsh 即可

    以 Ubuntu 為例:

    1
    sudo apt install zsh
  • 目前最新版 MacOS 預設 Shell 為 Zsh,不需額外安裝

Oh My Zsh - a delightful & open source framework for Zsh

安裝 oh-my-zsh

  1. 安裝 oh-my-zsh 需要的套件(系統可能會內建):

    • git
    • curl

    以 Ubuntu 為例:

    1
    sudo apt install git curl
  2. 安裝 oh-my-zsh

    1
    sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

    此時會詢問是否要將預設終端應用程式設定成 Zsh,按下 Enter (接受預設值 Y)並輸入密碼即可切換

    Untitled
    Untitled

    安裝完之後,出現這個提示即代表安裝成功

    Untitled
    Untitled

  3. For Linux 桌面版:建議重新登入您的作業系統以套用變更,桌面環境需要重新登入整個桌面。

    💡 如果重登後終端機設定沒有生效,則需要手動變更啟動終端機為 zsh

    如需查看 zsh 的安裝位置,可利用以下指令:

    1
    which zsh

    以 Konsole 為例,需要更改的是目前設定檔的這個欄位,輸入的是上方指令的結果


Powerlevel10K

Powerlevel10K 是一個 ZSH 主題,提供高度個人化的終端機提示

以下是幾個終端機提示的範例:

GitHub - romkatv/powerlevel10k: A Zsh theme

💡 oh-my-posh 和 Powerlevel10K 是基於 Nerd Font 設計的應用程式,因此推薦在安裝使用前先行將字型裝好,請參閱 Nerd Font 安裝字型。

這裡我們將直接利用 oh-my-zsh 的主題系統安裝

  1. 將主題 Clone 下來

    1
    git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
  2. 打開 zsh 設定檔

    1
    code ~/.zshrc
  3. 將主題設定為 Powerlevel10K:

    將原本的

    1
    ZSH_THEME="robbyrussell"

    取代成

    1
    ZSH_THEME="powerlevel10k/powerlevel10k"
  4. 儲存 ~/.zshrc 檔案後,重新開啟終端,Powerlevel10k 就會開始設定精靈,逐步個人化您的終端機

    💡 選擇的方式直接按一下選項前面顯示的按鍵即可

    💡 如果不小心選錯了可以按一下 r 重新開始精靈

    1. 這是否長得像鑽石?(Unicode 測試)

      ◆ | black diamond (U+25C6) @ Graphemica

    2. 這是否長得像一個鎖?(確認字型圖示)

      lock | Font Awesome

    3. 這是否長得像一個向上箭頭(偵測 Nerd Font 版本)

      🠉 | upwards arrow with large triangle arrowhead (U+1F809) @ Graphemica

      💡 Nerd Font 最近做了一次大改版,大幅修改了圖示字元碼,此圖示用意就是拿來偵測 Nerd Font 版本支援,如果你是裝最新版字型看到這題是破圖,代表你不是 Nerd Font 2

      • Nerd Font 2

      • Nerd Font 3

    4. 重試一次… 這是否長得像一個向上箭頭(偵測 Nerd Font 支援)

    5. 請問向下箭頭指在 1 還是 2

    6. 圖示是否都剛好在 X 內(確認字型重疊)

    7. 接著會逐步詢問個人化的部分,請依照您的喜好選擇

    8. 個人化選完後就會詢問這個問題,因為插件一多載入速度就會變慢,啟用這個就可以在 zsh 啟動時就開始有打字的回饋,這邊直接選建議值 Verbose 即可

    9. 因為這個設定需要變更 Zsh 設定檔,接著會問你是否寫入 ~/.zshrc ,直接按 y 讓他幫你寫入

    10. 跳出你選擇的終端提示主題後代表你已經設定成功

    💡 日後想要變更選擇的話,可以執行以下指令重新開始精靈

    1
    p10k configure

設定 oh-my-zsh

  1. 打開 zsh 設定檔

    1
    code ~/.zshrc
  2. 設定 Zsh 行為

    oh-my-zsh 貼心的在設定檔中留下許多可以調整的設定(例如:自動更新、是否停用 ls 顏色、主題、插件等),用途說明都有用註解寫起來,依需求調整即可

  3. 設定 Zsh 插件

    剛剛有提到 oh-my-zsh 有內建很多插件,很多插件都是提供自動完成功能,可以到以下連結查看所有插件

    Plugins Overview · ohmyzsh/ohmyzsh Wiki

    啟用插件

    1. 找到 Plugin= 開頭的那行,可以看到預設已經啟用 git 插件,可以整合 git 並提供 git 指令自動完成

    2. 加上你想啟用的插件,用空格隔開,並根據插件說明作設定

      💡 畫面上啟用的插件,都是提供軟體整合(包括自動完成)的插件,可參考以下連結,視需要啟用插件

      Plugins Overview · ohmyzsh/ohmyzsh Wiki

      ⚠️ 注意:越多插件啟用,終端機啟動速度越慢

    社群插件:

    以下再介紹幾個沒有在官方插件庫的 oh-my-zsh 插件:

Misc.

neofetch

用豪華的方式查看系統資訊

安裝:透過套件管理工具安裝 neofetch 即可

1
sudo apt install neofetch

nvm

Node.js 版本管理工具,可以快速切換 Node.js 的環境

GitHub - nvm-sh/nvm: Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions

安裝:

  1. 使用官方提供的自動化安裝腳本
1
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
  1. 透過 oh-my-zsh 插件安裝

使用:

  • 安裝 Node.js 16

    1
    nvm install 16
  • 解除安裝 Node.js 16.14.0

    1
    nvm uninstall 16.14.0
  • 暫時切換到 Node.js 14

    1
    nvm use 14
  • 設定預設 Node.js 版本

    1
    nvm alias default 16
  • 從另一個版本重新安裝 Global Package

    1
    nvm reinstall-packages 16.14.0

其他使用方法請參考 https://github.com/nvm-sh/nvm


htop

終端機的「工作管理員」

安裝:透過套件管理工具安裝 htop即可

1
sudo apt install htop

簡易使用說明:

  • F2: 設定 htop
  • F5: 切換清單 / 樹狀檢視
  • F9: 終止程式
  • F10: 離開 htop
  • H: 切換執行緒顯示(綠色的那幾行)

Nerd Font

Nerd font 是有名的字型模組,包含了許多圖示,可以在文字介面上擁有豐富的圖示,目前常見的等寬字型都有收錄。

Nerd Fonts - Iconic font aggregator, glyphs/icons collection, & fonts patcher

  1. 安裝

    1. 透過 oh-my-posh 自動化安裝

      oh-my-posh 有提供安裝字型的指令,目前為 Beta 階段

      1
      oh-my-posh font install

      ⚠️ 需使用系統管理員權限執行終端機,才能安裝字型

      此時會有字型選擇清單,選擇一個你習慣使用的字型,我的話會選 JetBrainsMono,按下 Enter 就會開始下載安裝

    2. 自行安裝 Nerd Font

      到以下連結下載您想要的字型

      Nerd Fonts - Iconic font aggregator, glyphs/icons collection, & fonts patcher

      Windows

      解壓縮後安裝含 NerdFontMono 的字型安裝,如果有很多個,選其中一個(Regular)安裝即可

      Brew (Mac)
      • 在終端機執行以下指令

        1
        2
        brew tap homebrew/cask-fonts
        brew install --cask font-<FONT NAME>-nerd-font

      其中 <FONT NAME> 以字型的名字代替

      Linux 安裝方式(以 Ubuntu / Debian 為例)

      /usr/local/share/fonts/ 是系統字型路徑

      ~/.local/share/fonts/ 或 ~/.fonts 是目前使用者字型路徑

      1. 下載想要的字型 (下載按鈕的連結,以 JetBrains Mono 為例)

        1
        wget https://github.com/ryanoasis/nerd-fonts/releases/download/v3.0.2/JetBrainsMono.zip
      2. 將下載的字型解壓縮到 ~/.fonts

        1
        2
        mkdir ~/.fonts
        unzip JetBrainsMono.zip -d ~/.fonts
      3. 重新載入字型快取

        1
        fc-cache -fv

      參考來源:

      Install a nerd font on ubuntu

  2. 套用字型設定

    Windows Terminal
    1. 開啟設定,選擇「預設值」設定檔或「PowerShell」設定檔(建議改「預設值」)

    2. 進入外觀設定,將字型改成剛剛安裝的 Nerd Font Mono 字型後,並按下「儲存」

    Gnome Shell
    1. 按下右上角的選單按鈕,並選擇偏好設定

    2. 選擇目前使用的設定檔,將「自訂字型」勾起來,並按一下右邊的按鈕

    3. 選擇含「Nerd Font Mono」的字型後按下「選取」

    Konsole

    ⚠️ 安裝字型後需先重新啟動 Konsole

    1. 進入設定 > 編輯目前的設定檔

    2. 選擇外觀,並按一下字型右邊的選擇按鈕

    3. 選擇含「Nerd Font Mono」的字型後按下「確定」

    Visual Studio Code
    1. 開啟設定

    2. 搜尋 terminal.integrated.fontFamily

    3. 輸入剛剛安裝的字型名稱

後記

本文是我在 2023/08 寫的公開筆記,有興趣看原文的話可以到 Notion 上看,有任何問題歡迎提出。

  • Title: 終端機個人化、實用工具推薦
  • Author: jimchen5209
  • Created at : 2024-03-05 12:18:50
  • Updated at : 2024-04-14 22:27:41
  • Link: https://jw-blog.jimchen5209.me/2024/03/05/終端機個人化、實用工具推薦/
  • License: This work is licensed under CC BY-NC-SA 4.0.
On this page
終端機個人化、實用工具推薦