omz——追求极致终端体验 我封装了自己的oh my zsh

omz——追求极致终端体验 我封装了自己的oh my zsh

show

为了追求更极致终端体验,从bash切换到了zsh,并封装了自己的oh my zsh

代码为oh my zsh的fork 深度精简 并 二次封装的版本

仓库地址: https://github.com/yaocccc/omz

特点:

  • 极快的启动速度 0.12s 左右
  • fork自oh my zsh并剔除绝大部分代码(仅保留不到180行代码)
  • 弱水三千只取一瓢 仅保留5个高频使用的插件
    • extract: 使用extract命令解压任意格式压缩文件
    • fzf-tab: 用fzf替换原生的tab补全选择
    • z.lua: z keyword 命令快速跳转到常去目录
    • zsh-autosuggestions: 在终端建议可能输入的命令 接受建议
    • zsh-syntax-highlighting: 高亮显示输入的命令
  • 支持fzf预览图片(x11相关终端内) 效果见标题下展示图
  • 提供更好看的git日志展示 效果见标题下展示图
  • 提供部分hook,例 启动时 自动进入上次进入的目录

安装使用

1
2
3
4
5
# 找一个地方clone本仓库 例如 ~/.config
git clone https://github.com/yaocccc/omz

# 在你的zsh配置里 source ~/.config/omz/omz.zsh (举例)
echo "source ~/.config/omz/omz.zsh" >> ~/.zshrc

REQUIRES

  • zsh
  • fzf
  • fd
  • bat (可选 更好的文本预览效果)
  • exa (可选 更好的目录预览效果)
  • ueberzug (可选 可在x11终端下预览图片)
1
2
3
4
5
6
7
8
9
请自行安装fd
On macOS: brew install fd
On Arch Linux: pacman -S fd
On Ubuntu: apt install fd-find && ln -s $(which fdfind)
On Debian: sudo apt-get install fd-find && ln -s $(which fdfind) ~/.local/bin/fd

请自行安装fzf
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install

FILE TREE

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
omz
├── cache/ -- 部分需要缓存的配置
├── lib/ -- 部分依赖文件
│   ├── omz.sh -- omz.sh
│   ├── img_preview.sh -- 图片预览脚本 for fzf
│   └── file_preview.sh -- 文件预览脚本 for fzf
├── config/
│   ├── fzf.zsh -- fzf 及 fzf-tab配置
│   ├── git.zsh -- git相关配置
│   ├── hook.zsh -- 命令或启动钩子配置
│   └── omz.zsh -- omz基础配置
├── plugins/ -- 插件
├── themes/ -- 主题
├── omz.zsh -- 配置入口
└── README.md -- README

CONFIGURATION

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 以下env如果需要请在source omz.zsh 前定义

_OMZ_APPLY_PREEXEC_HOOK
是否允许OMZ开启"命令发生前"相关hook
默认false
行为:
1. 执行命令前 将修改当前终端会话的title为: $cmd

_OMZ_APPLY_CHPWD_HOOK
是否允许OMZ开启"pwd变更后"相关hook
默认false
行为:
1. 载入时,会自动切换到上一次cd过的目录
2. 发生cd命令时,自动记录当前cd的目录(在缓存文件中)

PLUGINS

  1. z.lua

    z keyword
    按使用频率跳转到keyword关联目录
    例如 z zsh 可快速跳转到 ~/.config/zsh 目录

  2. extract

    extract xxx
    extract一个压缩文件
    可根据不同压缩文件类型进行解压 无需记忆长解压指令

  3. zsh-autosuggestions

    输入命令时从history中找到最符合的命令
    <right> 使用该 suggestion

  4. zsh-syntax-highlighting

    高亮输入命令

  5. fzf-tab

    tab时使用fzf进行候选选择

  6. 常用git命令支持(非插件)

    gco = git checkout
    gpo = git push origin <当前分支>
    gpl = git pull origin <当前分支>
    gd = git diff
    gs = git status
    gss = 更简洁的 git status
    gam = git add all 并 git commit -m '内容', e.g. git commit update readme
    gll = 简洁打印 git log, 默认展示10条 若想展示更多 gll 100
    glll = 详细打印 git log, 默认展示10条 若想展示更多 glll 100

    展示 glll效果如下 PS: 实际使用带颜色 可自行根据 此文件:git.zsh 内容配置对应颜色

    $ glll
    * e797da3 2022-12-14 15:18 user1: fix: 透传减轻下游负载
    * ed8a8ba 2022-12-14 14:41 user1: fix: 查询时透传id
    * 7c2799b 2022-12-13 19:04 user1: Merge branch ‘abc’ into ‘master’
    |\
    | * 3f2441b 2022-12-13 19:01 user1: fix: 修复安全隐患
    |/
    * 70a46da 2022-12-13 18:27 user2: Merge branch ‘fix/abcd’ into ‘master’


omz——追求极致终端体验 我封装了自己的oh my zsh
https://yaocc.cc/omz/
作者
Yaocan Chen
发布于
2023年1月8日
许可协议