解決oh-my-zsh主題亂碼問題
解決Rocky Linux下ohmyzsh按Tab鍵自動補全命令時重復字符且無法刪除問題
Solve:
Remnant characters when tab completing
I see duplicate typed characters after I complete a command
願你美化半生,歸來仍是默認
一、背景
厭倦了Linux單調的命令行,那么你來對地方了,無需圖形化界面,提供優美主題和插件,SSH也管用的shell美化!
目前的美化方案有ohmyzsh、oh-my-fish、oh-my-bash
GitHub上star最多的是ohmyzsh,估計用得最多的不是Linux用戶而是Mac用戶,反過來想我們Linux上安裝也能體驗Mac般的命令行哈哈哈
zsh和bash一樣屬於解釋器,因ohmyzsh而火,當然還有更激進的fish,但是可能不那么兼容bash
而目前Linux默認的shell還是是bash,如果覺得zsh還是不夠穩的話可以用oh-my-bash
當然目前(2022-1-20 Rocky Linux 8)ohmyzsh、oh-my-bash都還有Bug
-
ohmyzsh在編輯命令時,按Tab鍵自動補全命令時重復字符且無法刪除問題,不過筆者已經解決了
-
ohmyzsh在
git branch -a時不是直接輸出,而是跳到另一個界面顯示,不知道是bug還是git插件就是這樣設計的 -
而oh-my-bash則是大小寫敏感都無法配置,比較雞肋
安裝ohmyzsh
dnf -y install zsh
# 直接用官方腳本,但是網不好可能下不了
# sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# git 下載,https得掛代理,最好還是使用ssh
cd ~
# git clone https://github.com/ohmyzsh/ohmyzsh.git .oh-my-zsh
git clone git@github.com:ohmyzsh/ohmyzsh.git .oh-my-zsh
# 下載插件
# git clone https://github.com/zsh-users/zsh-syntax-highlighting.git .oh-my-zsh/plugins/zsh-syntax-highlighting
git clone git@github.com:zsh-users/zsh-syntax-highlighting.git .oh-my-zsh/plugins/zsh-syntax-highlighting
# git clone https://github.com/zsh-users/zsh-autosuggestions.git .oh-my-zsh/plugins/zsh-autosuggestions
git clone git@github.com:zsh-users/zsh-autosuggestions.git .oh-my-zsh/plugins/zsh-autosuggestions
cp .oh-my-zsh/templates/zshrc.zsh-template .zshrc
vi .zshrc
source .zshrc
# 將用戶默認shell從bash改為zsh
usermod -s /bin/zsh root
個人.zshrc配置
# 解決zsh-autosuggestions顯示白色
export TERM=xterm-256color
ZSH_THEME="agnoster"
# 禁用自動更新
zstyle ':omz:update' mode disabled
# 綁定按鍵
bindkey "^[[1~" beginning-of-line
bindkey "^[[4~" end-of-line
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# ls -a無法生效
alias ll='ls -lh'
CASE_SENSITIVE="true"
HYPHEN_INSENSITIVE="true"
# 80G
plugins=(
git
zsh-autosuggestions
zsh-syntax-highlighting
)
注意bindkey中的^[[1~不是直接打出來的,其實是i模式下Ctrl+v home輸入進去的,另一個是End鍵
最后把當前用戶的默認shell改為zsh
chsh -s /bin/zsh
2.1 主題特殊字符亂碼
FAQ#i-have-a-weird-character-in-my-prompt
安裝powerline字體:
# rocky linux 8為例
dnf -y install powerline-fonts
2.2 Tab鍵補全出現重復字符
FAQ#i-see-duplicate-typed-characters-after-i-complete-a-command
如果設置了編碼也不能解決,而你用的是agnoster、cloud主題,使用默認主題、arrow沒問題,那么恭喜你,找對地方了,我可能是全網第一個發現並解決這個問題的人
發現的時候是2022-01-20,zsh是5.5.1版本,ohmyzsh是 master (22c11da),操作系統是Rocky Linux 8.5,用CentOS 7發現沒有這個毛病
以agnoster為例,我發現出問題的就是.oh-my-zsh/themes/agnoster.zsh-theme文件最后一行的最后一個空格,占位不對,將他從這樣
PROMPT='%{%f%b%k%}$(build_prompt) '
改成這樣就行
PROMPT='%{%f%b%k%}$(build_prompt)%{ %}'
%{ %}是用於格式化的代碼
三、SSH客戶端美化
3.1 Windows SSH客戶端選擇
選一個好的SSH客戶端能讓你事半功倍
最讓人熟知的SSH客戶端就是Xshell了,配合Xftp,十分能打,官網登錄就能獲取學校、家庭免費版,下載鏈接發到郵箱
但是我們這篇博客的主題是“美化”,Xshell顏值只能說中規中矩,似乎沒法和Mac命令行打
顏值最高的是termius,可惜自定義主題這方面不是很友好,而且會覆蓋ohmyzsh的顏色,以及一些圖標顯示有缺陷
還在github上發現一個,叫electerm,不過不能打,直接就不支持ohmyzsh的字體
綜合來看,Xshell永遠滴神
仔細想Xshell這樣的界面是犧牲了顏值,但是提高了效率,我們也可以配置成高顏值低效率
再用Alt+s鍵就變成
挺能打的了,當然要是官方能重構成termius那種高級主題更好\(@^0^@)/
3.2 Xshell配合agnoster主題
設置Xshell配色方案,配色方案(地球左邊的圖標)- 瀏覽 - 選中XTerm - 另存為
編輯新出現的XTerm(2) 修改"背景" - 選其他顏色,自定義顏色,按RGB我推薦兩種顏色,較淺的是36 49 53,這是我從視頻中看到的Terminix上取下的顏色,有點淺,直接降低亮度得到30,感覺還行,添加到自定義顏色
把背景和ANSI的黑色都設置成這個顏色!完美(除了ohmyzsh的bug)

四、zsh使用技巧
總結一下zsh和bash在操作上的不同
-
git add,用 ga -
查找以 xx 開頭的歷史命令,先輸 xx 再按上鍵
bash中無論當前輸了什么內容,按上鍵都是上一個使用的命令,要查找以 xx 開頭的命令得用 !
