Z shell zsh 讓終端不在只是終端

2021-10-16 13:05:02 字數 4142 閱讀 8883

很久之前有說到 fish,乙個開箱即用的優質 shell。這次來講講 zsh,讓你深度定製自己的 shell。使你的終端獨一無二。

zsh是乙個強大的shell,既可以作為互動式shell,也可以作為指令碼語言直譯器。使用者社群**"oh my zsh"收集z shell的第三方外掛程式及主題。[8]截止於2023年,其github源共有超過1000位貢獻者、200多款外掛程式和超過140款主題。

相比於 bash,zsh 在很多方面做出了優化。例如:自帶對數百條命令的補全支援;本身就可以通過檔案擴充套件來匹配檔案;自帶拼寫檢查;可程式設計的命令列介面;自帶一些常用的命令,如where.於此同時,zsh 是相容 bash的,而 fish 並不是。

選擇了 zsh,你會擁有比 bash 更好的使用體驗,比 fish 更靈活的自定義空間。

安裝 zsh 是非常簡單的,任何的linux都可以使用自帶的包管理器來安裝 zsh, 例如 ubuntu:

sudo apt install zsh
mac 從 2019 年開始就將預設的 shell 從 bash 替換成了 zsh,所以也許你根本不需要安裝就已經擁有了 zsh。當然,如果你的 mac 是2019 以前的,沒有 zsh, 用brew安裝它也十分容易。

brew install zsh
在 windows 中安裝 zsh 就顯得麻煩多了。首先,你需要安裝cygwim,它可以幫你在在 windows 中構建 unix 環境,在 windows 中感受 liunx 的感覺。

執行安裝程式時,請按照說明操作,確保安裝程式安裝在c:\cygwin64

我們將使用 cygwin 安裝一些軟體包,這些軟體包將有助於在 windows 上使用 linux 系統。我們將安裝apt-cyg,它將像apt-get一樣工作,還將安裝許多其他包,像 vim 一樣。

在 linux 和 mac 中,你只需要開啟 terminal, 輸入下面的命令就可將 zsh 設定成預設的 shell。

sudo chsh -s $(

which zsh)

一開進入 zsh,你可能覺得很一般。因為 zsh 的預設幾乎和 bash 差不多。但 zsh 擁有許多強大的外掛程式,這些外掛程式可以在oh my zsh中找到。

這裡呢,我推薦使用 zimfw 來安裝外掛程式。zim 是乙個 zsh 配置框架,具有極快的速度和模組化擴充套件。zim 非常容易定製,並且提供了一組豐富的模組和功能。

zim 提供了兩種安裝方式。

zmodule completion

zmodule zsh-users/zsh-completions

zmodule zsh-users/zsh-autosuggestions

# fish-like history search (up arrow) for zsh.

# zsh-users/zsh-history-substring-search must be sourced after zsh-users/zsh-syntax-highlighting

zmodule zsh-users/zsh-history-substring-search

# enables and configures smart and extensive tab completion.

# completion must be sourced after zsh-users/zsh-completions

zmodule zdharma/fast-syntax-highlighting

配置好你想要的模組後,記得使用zimfw install來安裝它們。

同樣的,安裝主題就和安裝模組一樣,放在配置檔案中, install 就好了。

在完成外掛程式和主題的安裝後,想必你的 zsh 已經相當的好用了。

這裡我給出我的指令碼,作為參考。

export plug_dir=

$home/.zimif[

[! -d $plug_dir]]

;then

curl -fssl | zsh

rm ~/.zimrc

ln -s ~/.config/zsh/zimrc ~/.zimrc

echo

"source ~/.config/zsh/zshrc"

>>~/.zshrc

zimfw install

fi

如果你是乙個 vim 或者 neovim 的使用者,想必一定十分喜愛 vim 的模式。那麼,恭喜你,zsh 剛好支援 vim 模式和鍵位的繫結。

建立乙個檔案vi.zsh,內容是:

bindkey -v

bindkey -m vicmd "i" vi-insert

bindkey -m vicmd "i" vi-insert-bol

bindkey -m vicmd "h" vi-backward-char

bindkey -m vicmd "l" vi-forward-char

bindkey -m vicmd "0" vi-beginning-of-line

bindkey -m vicmd "4" vi-end-of-line

bindkey -m vicmd "j" down-line-or-history

bindkey -m vicmd "k" up-line-or-history

bindkey -m vicmd "u" undo

#bindkey -m vicmd "-" vi-rev-repeat-search

bindkey -m vicmd "=" vi-repeat-search

bindkey -m vicmd "e" vi-forward-word-end

bindkey "^d" autosuggest-accept

function zle-line-init zle-keymap-select /(main|viins)/-- ins --}"

rps2=

$rps1

zle reset-prompt

}function zle-keymap-select

== vicmd ]]||

[[$1=

'block']]

;then

echo -ne '\e[1 q'

elif[[

$== main ]]||

[[$== viins ]]||

[[$=

'']]||

[[$1=

'beam']]

;then

echo -ne '\e[5 q'fi}

zle -n zle-keymap-select

echo -ne '\e[5 q'

preexec(

)_fix_cursor(

)precmd_functions+=

(_fix_cursor)

zle -n zle-line-init

zle -n zle-keymap-select

keytimeout=1

然後在~/.zshrc中使用source命令載入它,你就可以像使用 vim 一樣使用 zsh。

最後,貼上我的 zsh 配置,供有需要的人參考。

劉鑾雄 公道不在人心,是非只在時勢

如果說有那個富豪最富有爭議性,那一定就是劉鑾雄了,因為他身上有太多故事了,甚至有人調侃,他養活了香港一半的記者,其花邊新聞數不勝數,其風流往事至今被人津津樂道,那麼生活中他又是個什麼樣的人呢?公道不在人心,是非只在時勢 長期持續的盈利能力 穩定的現金流收入 後續很少的資本開支 生活中別的富豪都很低調...

讓 Edit 只接受數字《轉》

方法1 proceduretform1.edit1keypress sender tobject varkey char begin ifnot keyin 0 9 then key chr 0 end 方法2 proceduretform1.edit1keypress sender tobject...

linux 中讓人不在「蛋定」的空格

root localhost yum.repos.d ls centos base.repo centos debuginfo.repo centos media.repo centos vault.repo q root localhost yum.repos.d rm q rf rm canno...