【zsh使用技巧】Linux shell美化,ohmyzsh安装+Xshell美化,体验Mac命令行
解决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 ~
# 将用户默认shell从bash改为zsh
usermod -s /bin/zsh root
zsh
# 如果git还没配置
# git config --global user.name "xx"
# git config --global user.email xx
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
# 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
个人.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这样的界面是牺牲了颜值,但是提高了效率,我们也可以配置成高颜值低效率
![](https://img2022.cnblogs.com/blog/2231940/202201/2231940-20220120193638663-87428175.png)
再用Alt+s
键就变成
![](https://img2022.cnblogs.com/blog/2231940/202201/2231940-20220120193756442-684417189.png)
挺能打的了,当然要是官方能重构成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 开头的命令得用 !