【zsh使用技巧】Linux shell美化,ohmyzsh安装+Xshell美化,体验Mac命令行

发布时间 2023-06-07 10:37:39作者: 云牧青

解决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发现没有这个毛病

github issues

以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 开头的命令得用 !