zoukankan      html  css  js  c++  java
  • zInit插件安装配置

    安装

    自动安装

    官方推荐的安装方式,一键完成。不过让我很没有安全感,我倾向于手动安装。

    sh -c "$(curl -fsSL https://raw.githubusercontent.com/zdharma/zinit/master/doc/install.sh)" 
    

    手动安装

    首先 clone repo 到随便哪个位置

    git clone https://github.com/zdharma/zinit.git ~/.zinit/bin
    

    然后在你的 ~/.zshrc 顶端添加如下语句

    source ~/.zinit/bin/zinit.zsh
    

    安装完成,非常简单。

    配置

    从 GitHub repo 加载插件

    最为常见的加载方式,和其他插件管理器的用法是一致的,直接 zinit light {用户名}/{repo名} 即可。

    zinit light zsh-users/zsh-autosuggestions
    zinit light zdharma/fast-syntax-highlighting
    # PS. zinit 和 fast-syntax-highlighting 是同一个作者,这位作者对速度的追求确实让人钦佩
    

    加载 oh my zsh 插件

    OMZ 别的不说,插件是真的多,如果不能加载 OMZ 插件那就太遗憾了。因此像 antigen 这样的插件管理器甚至直接提供了整合 OMZ 框架的能力。

    zinit 并没有直接整合 OMZ,不过提供了更为强大的 snippet 命令来加载单独的插件。

    单文件插件

    snippet 命令可以接 URI 来直接加载单个文件。比如加载 OMZ 的 sudo 插件:

    zinit snippet OMZ::plugins/sudo/sudo.plugin.zsh
    

    后面那部分看起来好像不像一个 URI?因为 OMZ 实在太常用了,因此可以用 OMZ:: 来代替它的 repo 地址(对于 Prezto 则是 PZT::),上面的写法其实等价于:

    zinit snippet https://github.com/ohmyzsh/ohmyzsh/blob/master/plugins/sudo/sudo.plugin.zsh
    

    多文件插件

    有时候,插件目录里不止一个文件(比如包含插件+补全),这时就需要使用 svn 修饰词来加载了:

    zinit ice svn
    zinit snippet OMZ::plugins/extract
    

    这里不详细解释什么叫修饰词了,你可以理解成一种实现可选参数的手段,修饰词只对接下来的一条命令起效。 格式是 zinit ice {修饰词1} {修饰词2} ...

    svn 修饰词,表示下一行的 URI 需要使用 SVN 协议加载。此时 zinit 会使用 SVN 协议下载整个目录,自动识别并加载需要的文件。

    加载补全

    补全文件,有两种加载方式:1. 使用 svn 修饰词直接加载目录,zinit 会自动识别并加载补全。 2. 直接加载补全文件,此时需要使用 as="completion" 这个修饰词,它会让 zinit 将下一行命令加载的文件作为补全安装到指定目录:

    zinit ice as="completion"
    zinit snippet OMZ::plugins/cargo/_cargo
    

    加载 OMZ 插件时需要注意的点

    OMZ 的部分插件/主题会依赖 OMZ 本身提供的功能。比如 git 插件,如果想要正常使用的话,需要加载 OMZ 的 git 库。

    # 加载 OMZ 的 git 库
    zinit snippet OMZ::lib/git.zsh
    # 加载 OMZ 的 git 插件
    zinit snippet OMZ::plugins/git/git.plugin.zsh
    

    也就是说,虽然 zinit 并没有提供直接加载 OMZ 框架的能力,但是你可以使用 snippet 功能选择性加载框架的部分功能。这比其他插件管理器的做法更为灵活。

    比如我的配置里就直接加载了 OMZ 的部分库,如果你也是 OMZ 的用户,建议同样加载这些库,能保证体验一致。(比如键位绑定)

    zinit snippet OMZ::lib/clipboard.zsh
    zinit snippet OMZ::lib/completion.zsh
    zinit snippet OMZ::lib/history.zsh
    zinit snippet OMZ::lib/key-bindings.zsh
    zinit snippet OMZ::lib/git.zsh
    zinit snippet OMZ::lib/theme-and-appearance.zsh
    

    Turbo Mode

    终于说到 zinit 的最强 feature 了。没有 Turbo Mode 的 zinit 不过是略为优秀的插件管理器。然而有了 Turbo Mode,zinit 可以说是顶级 zsh 插件管理器,没有之一!

    这个功能非常强大,基本用法却很简单。举例来说,下面的代码,就实现了 OMZ git 插件的延迟加载。

    zinit ice lucid wait='0'
    zinit snippet OMZ::plugins/git/git.plugin.zsh
    

    延迟加载用到了两个修饰词:lucid,用于静默加载。wait={秒},在 prompt 加载完毕后的若干秒后再加载。上面的例子就是让 prompt 启动后立刻加载 git 插件。

    如果坚持追求极致速度的话,可以参考:zplugin_tutorial/#turbo-mode-加载复杂的命令提示符

    安装一些下面用到的插件

    安装lua

    yum -y install libtermcap-devel gc ncurses-devel libevent-devel readline-devel gc lua.x86_64
    

    安装unzip

    yum install -y unzip.x86_64
    

    安装svn

    yum install -y subversion
    

    安装exa

    安装make

    dnf group install "Development Tools"
    
    dnf -y install glibc.x86_64
    
    yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel make.x86_64 cmake.x86_64 autoconf.noarch
    

    安装exa

    # 下载对应二进制版本并解压安装到指定目录
    cd /usr/local/src
    wget https://github.com/ogham/exa/releases/download/v0.9.0/exa-linux-x86_64-0.9.0.zip
    unzip exa-linux-x86_64-0.9.0.zip
    mv exa-linux-x86_64 /usr/local/bin/exa
    
    # 下载并安装对应的 MAN 手册
    wget https://raw.githubusercontent.com/ogham/exa/master/contrib/man/exa.1
    mv exa.1 /usr/share/man/man1
    

    zinit常用命令:

    # 加载插件
    $ zinit load {plg-spec}
    
    # 加载插件,不打印加载信息
    $ zinit light [-b] {plg-spec}
    
    # 加载单文件,-f 表示不使用缓存,即强制重新下载
    $ zinit snippet [-f] {url}
    
    # 卸载插件,-q 表示 quiet
    $ zinit unload [-q] {plg-spec}
    
    # 显示插件加载时间,以插件加载顺序排序。-s 表示以秒进行显示(默认毫秒),-m 表示显示插件加载时刻
    $ zinit times [-s] [-m]
    
    # 显示 Zinit 状态
    $ zinit zstatus
    
    # 显示插件加载状态,--all 表示显示所有插件
    $ zinit report {plg-spec} | --all
    
    # 显示已加载的插件(使用关键字进行过滤)
    $ zinit loaded [keyword],list [keyword]
    
    # 显示每个插件的设置的按键绑定
    $ zinit bindkeys
    
    # 编译插件
    $ zinit compile {plg-spec} | --all
    
    # 移除已编译的插件
    $ zinit uncompile {plg-spec} | --all
    
    # 显示已编译的插件
    $ zinit compiled
    
    # 更新 Zinit
    $ zinit self-update
    
    # 更新插件/脚本,--all 表示更新所有插件/脚本,-q 表示静默更新,-r | --reset 更新前执行 git reset --hard / svn revert
    $ zinit update [-q] [-r] {plg-spec} | URL | --all
    
    # 为下一条 zinit 命令添加 ice 描述符
    $ zinit ice <ice specification>
    
    # 磁盘删除插件/脚本,--all 表示清除,--clean 表示删除未加载的插件/脚本
    $ zinit delete {plg-spec} | URL | --clean | --all
    
    # 进入插件目录
    $ zinit cd {plg-spec}
    

    zinit 管理

    • zinit 升级
    zinit self-update
    
    • 升级其他插件
    zinit update
    
    • 清理没有加载的插件
    zinit delete --clean
    

    我的zsh配置

    # Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
    # Initialization code that may require console input (password prompts, [y/n]
    # confirmations, etc.) must go above this block; everything else may go below.
    if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
      source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
    fi
    
    # 历史命令日期显示格式
    HIST_STAMPS="yyyy-mm-dd"
    
    # 补全快捷键重设
    bindkey ',' autosuggest-accept
    
    # source your own zsh file if exists
    [ -f ~/.zsh.sh ] && source ~/.zsh.sh
    
    # source your own shrc file if exists
    [ -f ~/.env.sh ] && source ~/.env.sh
    
    # source your own alias file if exists
    [ -f ~/.alias.sh ] && source ~/.alias.sh
    
    # source your own function file if exists
    [ -f ~/.fun.sh ] && source ~/.fun.sh
    
    # source your proxy shrc file if exists
    [ -f ~/.proxy.sh ] && source ~/.proxy.sh
    
    # To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
    [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
    
    
    # 下面都是zinit配置
    source ~/.zinit/bin/zinit.zsh
    
    # 加载 powerlevel10k 主题
    zinit ice depth=1; zinit light romkatv/powerlevel10k
    
    # fzf文本增强工具
    zinit ice from"gh-r" as"program"
    zinit load junegunn/fzf-bin
    zinit light Aloxaf/fzf-tab
    
    # 快速目录跳转
    zinit ice lucid wait='1'
    zinit light skywind3000/z.lua
    
    zinit light zsh-users/zsh-completions
    zinit light zsh-users/zsh-autosuggestions
    zinit light zdharma/fast-syntax-highlighting
    # zinit light zsh-users/zsh-syntax-highlighting
    
    # 加载 OMZ 框架及部分插件
    zinit snippet OMZ::lib/clipboard.zsh
    zinit snippet OMZ::lib/completion.zsh
    zinit snippet OMZ::lib/history.zsh
    zinit snippet OMZ::lib/key-bindings.zsh
    zinit snippet OMZ::lib/git.zsh
    zinit snippet OMZ::lib/theme-and-appearance.zsh
    zinit snippet OMZ::plugins/colored-man-pages/colored-man-pages.plugin.zsh
    zinit snippet OMZ::plugins/sudo/sudo.plugin.zsh
    
    zinit ice svn
    zinit snippet OMZ::plugins/extract
    zinit ice lucid wait='1'
    zinit snippet OMZ::plugins/git/git.plugin.zsh
    
    
    # ---- (可选)加载了一堆二进制程序 ----
    zinit light zinit-zsh/z-a-bin-gem-node
    
    zinit as="null" wait="1" lucid from="gh-r" for 
        mv="exa* -> exa" sbin       ogham/exa 
        mv="*/rg -> rg"  sbin		BurntSushi/ripgrep 
        mv="fd* -> fd"   sbin="fd/fd"  @sharkdp/fd 
        sbin="fzf"       junegunn/fzf-bin
    
    # 加载它们的补全等
    zinit ice mv="*.zsh -> _fzf" as="completion"
    zinit snippet 'https://github.com/junegunn/fzf/blob/master/shell/completion.zsh'
    zinit snippet 'https://github.com/junegunn/fzf/blob/master/shell/key-bindings.zsh'
    zinit ice as="completion"
    zinit snippet 'https://github.com/robbyrussell/oh-my-zsh/blob/master/plugins/fd/_fd'
    zinit ice mv="*.zsh -> _exa" as="completion"
    zinit snippet 'https://github.com/ogham/exa/tree/master/completions/completions.zsh'
    
    # 不需要花里胡哨的 ls,我们有更花里胡哨的 exa
    DISABLE_LS_COLORS=true
    alias ls=exa
    # 配置 fzf 使用 fd
    export FZF_DEFAULT_COMMAND='fd --type f'
    # ---- 加载完了 ----
    
    

    参考:

    zinit

    fzf-tab

    我就感觉到快 —— zsh 和 oh my zsh 冷启动速度优化

    加速你的 zsh —— 最强 zsh 插件管理器 zplugin/zinit 教程

    zsh 启动速度慢的终极解决方案

    Quit using nvm:快删掉这个占据 Zsh 启动时间一半的怪物!

    使用 zinit 管理 zsh 插件

  • 相关阅读:
    执行上下文和作用域,作用域链
    学习笔记一:定位
    exports和module.exports的区别——学习笔记
    伪类和伪元素
    visibility和display
    CSS选择器,层叠
    Servlet乱码处理-------续集
    Servlet的乱码处理手记
    前端框架之Semantic UI
    最完整的Oracle11g 概述
  • 原文地址:https://www.cnblogs.com/hongdada/p/14048612.html
Copyright © 2011-2022 走看看