oh-my-zsh

進度
已完成
類別
terminal
基本技能
作者
Timothychen
Created
Jun 1, 2022 02:09 PM
製作時間
Jun 2, 2022 → Jun 14, 2022
前傾提要:
大家應該都知道終端機的程式有很多(bash,zsh……),但是目前mac的系統默認的終端機都從bash換到zsh了,而zsh又是一個有很高可變形的終端機,但是一個個手動調試可能會很困難,所以這裡採用一個套件oh-my-zsh來協助我們完成整個改造終端機的過程

過程:

第一步:更換終端機(iTerm2)

安裝Homebrew(一個奇妙的套件管理工具)

安裝iterm2

brew install iterm2

第二步:安裝oh-my-zsh

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

第三步:開始設定

oh-my-zsh的設定檔案在~/.zshrc
可以直接用vim去編輯啦,只是第一次用vim的時候會有點不知道要怎麼用
notion image
使用vim打開之後應該會看到這樣的畫面,然後就按e進入編輯模式,然後進去之後應該就會看到很多的配置項的內容。(詳情參見Vim篇 )
 
有幾個比較重要的:
  • ZSH_THEME="agnoster" 設定ZSH所使用的主題(可以用內建的也可以另外安裝)
 

改起來


安裝Powerlevel9k 主要的主題

下載主題
git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k
~/.zshrc進行設定
  • 更換ZSH的主題
ZSH_THEME="powerlevel9k/powerlevel9k"
  • 設定左側和右側的內容
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir vcs) POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status root_indicator background_jobs history time)
  • 確保icon可以顯示
POWERLEVEL9K_MODE='nerdfont-complete'

安裝zsh-autosuggestions

下載套件(終端機)
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestion
 
~/.zshrc中啟用套件
plugins=(zsh-autosuggestions)
 
*注意之後看到所有需要修改plugins的地方都不要將原本~/.zshrc中的內容刪掉,要直接加在後面(然後用空格分開) ex: 原本`plugins=(git)` 修改後`plugins=(git zsh-autosuggestions)`
 

安裝字體

這邊因為原生的字體可能會有出現錯誤亂碼等無法正常顯示的問題(因為我們所採用的主題有比較多特殊的icon,這些不會包含在原生的字體裡面,所以就無法正常去進行顯示),所以這邊要更換字體才能正常去使用
這個就是沒有更換字體看到的畫面😂
這個就是沒有更換字體看到的畫面😂
原則上只要是Nerd Font都可以符合需求,所以可以稍微找一下要使用什麼字體(我個人比較喜歡SauceCodePro Nerd Font 這個字體)
啟用特殊字型?
brew tap homebrew/cask-fonts
安裝SauceCodePro Nerd Font
brew install --cask font-sauce-code-pro-nerd-font
SauceCodePro Nerd Font

改變配色

下載repo,在裡面的schemes資料夾裡面找一個自己喜歡的樣式,然後在iterm裡面匯入(那這裡我是使用Tomorrow Night Eighties.itermcolors
iTerm2-Color-Schemes
mbadolatoUpdated Mar 17, 2023
notion image
notion image

zsh-syntax-highlighting

不同的指令會自動幫你上色,讓你知道自己是不是輸入正確的指令。
下載套件
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
~/.zshrc中啟用套件
plugins=(zsh-syntax-highlighting)

navi 可以看之前指令的紀錄

直接安裝(終端機)
brew install navi

tmux 可以多開iterm

直接安裝(終端機)
brew install tmux

autojump 快速切換目錄

這個套件特別好用(尤其是當你經常會使用一些路徑很常的目錄的時候,比如googledrive的本地同步目錄之類的,都非常的實用)
安裝(終端機)
brew install autojump
加入.zshrc設定檔案
[ -f $(brew --prefix)/etc/profile.d/autojump.sh ] && . $(brew --prefix)/etc/profile.d/autojump.sh
啟用(終端機)
source .zshrc
加入套件 plugins=(autojump)
ps:*然後之後只有有cd過的路徑,都可以用j [關鍵字]的方式快速切換當前目錄的路徑 然後那個關鍵字的部分只要那個路徑裡面有包含就可以 (但是盡量不要和其他重複,不然你可能會切到其他路徑😂)

修改VS Code內的終端機

如果不修改的話,這邊vscode還是會繼續使用原生的終端機軟體,然後打開的時候就是完全壞掉的狀態😂
打開vscode的偏好設定
打開vscode的偏好設定
使用json開啟
使用json開啟
"terminal.external.osxExec": "iTerm.app", "terminal.explorerKind": "external", "terminal.integrated.fontFamily": "SauceCodePro Nerd Font", "terminal.integrated.shell.osx":"/bin/zsh", "workbench.colorCustomizations": { "terminal.background":"#3b3b3b", "terminal.foreground":"#d5d5d5", "terminal.ansiBlack":"#000000", "terminal.ansiBrightBlack":"#000000", "terminal.ansiBlue": "#77aad5", "terminal.ansiBrightBlue":"#77aad5", "terminal.ansiCyan":"#75d4d5", "terminal.ansiBrightCyan":"#75d4d5", "terminal.ansiGreen":"#a7d3a9", "terminal.ansiBrightGreen":"#a7d3a9", "terminal.ansiMagenta":"#d6acd5", "terminal.ansiBrightMagenta":"#d6acd5", "terminal.ansiRed":"#f68d8c", "terminal.ansiBrightRed":"#f68d8c", "terminal.ansiWhite":"#ffffff", "terminal.ansiBrightWhite":"#ffffff", "terminal.ansiYellow":"#ffd478", "terminal.ansiBrightYellow":"#ffd478", } }
然後這些設定改一下,workbench.colorCustomizations這邊就是vscode裡面的終端機的素材主題(我是用跟iterm一樣的配色)

我的一點點想法:

其實很早之前我就有想過去客製化我的終端機了,因為看上去很酷,然後當時在改的過程中因為改錯.zshrc這個檔案,差點把整個終端機的環境搞壞。(還好後來是用time machine救回來)。
 
到那個時候我才發現一件事,就是自學的時候好像就算網路上很容易可以找到別人做的教材,但是實際做起來就完全是另外一件事情。因為首先網路上的教程是別人有一定的基礎和預備知識所寫的,但是作為一般人的我們卻不一定可以很好的吸收,不能吸收,只要過程中出了任何一點問題,就可能會很容易想放棄,或者再去找下一篇文章。
 
但是有的時候可能是時間點的問題,我這次能夠比較順的去完成整個過程(當然還是有遇到很多網路上沒有的問題),但是我覺得是因為我最近接觸比較多的終端機,開始漸漸的對終端機的功能,指令之類的有概念了,才能比較快的上手。
 
所以可能我們在自己自學的時候有時候我們會感到很挫折,可能知識因為我們缺少一個循序漸進的過程,一個讓我們建立基本認知的過程(而不是只有那些艱深難懂的專有名詞的解釋),才有可能更無痛的去入門或者去真正的學習一個東西

 

參考資料: