轻便ZSH配置(无Oh-my-zsh)
轻便ZSH配置(无Oh-my-zsh)
本教程基于Ubuntu20.04
目前各大论坛上关于zsh的资料,无论是在CentOS还是在Ubuntu下,大都用到Oh My Zsh这一框架。
但是Oh My Zsh本身十分庞大,对于日常开发来说可能很多功能都用不上,给人以一种很冗杂的感觉,甚至还会影响到shell的运行速度。
因此,笔者自行配置了zsh,尽可能在保证功能完整的条件下保持轻便简洁。先上一下最终效果。
注意,以下操作均需要重启终端或手动source才能生效。
安装zsh
下载并安装zsh。
sudo apt update
sudo apt install zsh
将默认shell设置为zsh。
chsh -s /usr/bin/zsh
弹出的设置界面选默认的(0)
就好。
安装插件
zsh-autosuggestions
:命令自动补全插件;zsh-syntax-highlighting
:命令行高亮插件;zsh-theme-powerlevel9k
:命令行提示符插件。
sudo apt install zsh-autosuggestions
sudo apt install zsh-syntax-highlighting
sudo apt install zsh-theme-powerlevel9k
启用插件,打开~/.zshrc
,添加以下内容。
source /usr/share/powerlevel9k/powerlevel9k.zsh-theme
source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
个性化定制
设置命令行显示
在~/.zshrc
中添加以下内容:
## powerlevel9k setting
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status ram load)
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir ip)
POWERLEVEL9K_PROMPT_ON_NEWLINE=true
RIGHT_PROMPT_ELEMENTS
设置的是右侧的提示内容,我这里的是上一条命令执行情况 剩余内存 系统负载;
LEFT_PROMPT_ELEMENTS
设置的是左侧的提示内容,我这里的是用户名与主机名 当前目录 ip地址;
可选参数如下,节选自https://zhuanlan.zhihu.com/p/125522215:
- background_jobs - 后台作业的指示器
- battery - 电池状态
- context - 您的用户名和主机,基于 $USER 和 SSH 状态的条件化
- date - 系统日期
- dir - 你当前的工作目录
- dir_writable - 如果您对当前文件夹没有写权限,则显示锁定图标
- disk_usage - 当前分区的磁盘使用情况
- history - 当前行的命令号
- host - 您当前的主机名
- ip - 显示当前 IP 地址
- vpn_ip - 显示当前的 VPN 地址
- public_ip - 显示你的公共IP地址
- load - 机器的平均负载
- os_icon - 操作系统图标
- ram - 显示空闲内存
- root_indicator - 指示用户是否具有超级用户状态
- status - 前一个命令的返回代码
- swap - 打印当前交换文件大小
- time - 系统时间
- user - 你现在的用户名
- vi_mode - 提示符的 Vi 编辑模式 (正常 | 插入)
- ssh - 指示您是否处于 SSH 会话中
PROMPT_ON_NEWLINE
设置的是是否开启换行输入,开启后用户输入光标将显示在提示内容的下一行。
更多关于POWERLEVEL9K
主题的搭配方案,可参考以下示例.
允许使用通配符
默认情况下 zsh 是不支持通配符(*)
匹配的,若要允许zsh使用通配符,请添加以下内容到~/.zshrc
中:
set nonomatch
使用fzf
fzf (fuzzy finder)插件可以方便我们查找历史命令,并且大大减少原本ctrl+R
的不便利程度。
安装只须在终端输入:
sudo apt install fzf
并将以下内容添加到~/.zshrc
中即可。
source /usr/share/doc/fzf/examples/completion.zsh
source /usr/share/doc/fzf/examples/key-bindings.zsh
常用方法为输入指令的某一部分,然后 ctrl+R
即可在历史指令中选择想调用的指令,详情见演示中视频的01:05
。