37 个版本
0.12.0 | 2024 年 5 月 19 日 |
---|---|
0.11.2 | 2024 年 3 月 10 日 |
0.11.1 | 2023 年 9 月 10 日 |
0.10.0 | 2022 年 3 月 30 日 |
0.1.1 | 2018 年 10 月 18 日 |
#1818 in 命令行工具
2MB
471 行
slick - 异步 ZSH 提示符
使用方法
安装
cargo install slick
安装 cargo
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
如果在 Linux 上,可能需要安装这个
apt install -y build-essential libssl-dev pkg-config
检查您的 PATH $HOME/.cargo/bin/slick
:w
然后将以下内容添加到您的 .zshrc
zle -N zle-keymap-select
zle -N zle-line-init
zmodload zsh/datetime
autoload -Uz add-zsh-hook
add-zsh-hook precmd slick_prompt_precmd
add-zsh-hook preexec slick_prompt_preexec
typeset -g slick_prompt_data
typeset -g slick_prompt_timestamp
SLICK_PATH=$HOME/.cargo/bin/slick
function slick_prompt_refresh {
local exit_status=$?
read -r -u $1 slick_prompt_data
PROMPT=$($SLICK_PATH prompt -k "$KEYMAP" -r $exit_status -d ${slick_prompt_data:-""} -t ${slick_prompt_timestamp:-$EPOCHSECONDS})
unset slick_prompt_timestamp
zle reset-prompt
# Remove the handler and close the fd
zle -F $1
exec {1}<&-
}
function zle-line-init zle-keymap-select {
PROMPT=$($SLICK_PATH prompt -k "$KEYMAP" -d ${slick_prompt_data:-""})
zle && zle reset-prompt
}
function slick_prompt_precmd() {
slick_prompt_data=""
local fd
exec {fd}< <($SLICK_PATH precmd)
zle -F $fd slick_prompt_refresh
}
function slick_prompt_preexec() {
slick_prompt_timestamp=$EPOCHSECONDS
# Set cursor style
# 0 ⇒ blinking block.
# 1 ⇒ blinking block (default).
# 2 ⇒ steady block.
# 3 ⇒ blinking underline.
# 4 ⇒ steady underline.
# 5 ⇒ blinking bar, xterm.
# 6 ⇒ steady bar, xterm.
echo -ne "\e[4 q";
}
自定义
设置以下环境变量以更改颜色/符号,例如
export SLICK_PROMPT_CMD_MAX_EXEC_TIME=3
export SLICK_PROMPT_ERROR_COLOR=88
export SLICK_PROMPT_GIT_ACTION_COLOR=1
export SLICK_PROMPT_GIT_BRANCH_COLOR=202
export SLICK_PROMPT_GIT_FETCH=0
export SLICK_PROMPT_GIT_MASTER_BRANCH_COLOR=white
export SLICK_PROMPT_GIT_REMOTE_AHEAD=""
export SLICK_PROMPT_GIT_REMOTE_BEHIND=""
export SLICK_PROMPT_GIT_REMOTE_COLOR=40
export SLICK_PROMPT_GIT_STAGED_COLOR=1
export SLICK_PROMPT_GIT_STATUS_COLOR=cyan
export SLICK_PROMPT_GIT_UNAME_COLOR=8
export SLICK_PROMPT_PATH_COLOR=blue
export SLICK_PROMPT_ROOT_COLOR="red"
export SLICK_PROMPT_ROOT_SYMBOL="#"
export SLICK_PROMPT_SSH_COLOR=2
export SLICK_PROMPT_SYMBOL="❯"
export SLICK_PROMPT_SYMBOL_COLOR=magenta
export SLICK_PROMPT_TIME_ELAPSED_COLOR=1
export SLICK_PROMPT_VICMD_COLOR="yellow"
export SLICK_PROMPT_VICMD_SYMBOL="❮"
export SLICK_PROMPT_NON_BREAKING_SPACE=" "
SLICK_PROMPT_GIT_FETCH=0
防止执行 git fetch
防止显示 git 用户名
export SLICK_PROMPT_NO_GIT_UNAME=1
灵感来自
依赖
~12MB
~309K SLoC