Update zsh config: new path

This commit is contained in:
rydesun 2021-02-05 22:57:00 +08:00
parent 4ba4c64705
commit fb0d570b95
4 changed files with 218 additions and 220 deletions

View file

@ -1,4 +1 @@
# Autostart X
if systemctl -q is-active graphical.target && [[ ! $DISPLAY && $XDG_VTNR -eq 1 ]]; then
xinit qtile
fi
source ${ZDOTDIR}/zprofile

View file

@ -1,216 +1 @@
# 基础配置
setopt no_beep # 不响铃
setopt correct # 修正命令
setopt interactive_comments # 交互模式支持注释
fpath=(${ZDOTDIR}/functions ${ZDOTDIR}/Completion $fpath)
# 插件 <<<------------------------------
command -v antibody &>/dev/null && source <(antibody init) && \
antibody bundle <<EOF
skywind3000/z.lua
zsh-users/zsh-completions
zsh-users/zsh-autosuggestions
zsh-users/zsh-syntax-highlighting
EOF
# z.lua <<<-----------------------------
# 数据文件路径
export _ZL_DATA=${XDG_DATA_HOME}/zsh/zlua
# 仅在当前路径$PWD改变时才更新数据库
export _ZL_ADD_ONCE=1
# 在跳转后显示目标路径名称
export _ZL_ECHO=1
# 增强匹配模式
export _ZL_MATCH_MODE=1
# >>>-----------------------------------
# zsh-autosuggestions <<<---------------
# 建议策略: history, completion, match_prev_cmd
ZSH_AUTOSUGGEST_STRATEGY=(history completion)
# 开启异步模式
ZSH_AUTOSUGGEST_USE_ASYNC=1
# >>>-----------------------------------
# pkgfile: 命令找不到时提示安装包
if [[ -f /usr/share/doc/pkgfile/command-not-found.zsh ]]; then
source /usr/share/doc/pkgfile/command-not-found.zsh
fi
# function: 模仿fish折叠路径
autoload -Uz fish_collapsed_pwd
# >>>-----------------------------------
# 历史记录 <<<--------------------------
HISTSIZE=10000
SAVEHIST=100000
setopt share_history
# 去掉重复和空白
setopt hist_ignore_dups hist_reduce_blanks hist_find_no_dups
# >>>-----------------------------------
# 命令补全 <<<--------------------------
autoload -Uz compinit
# 指定缓存文件所在目录必须先确保该目录存在
if [[ ! -d ${XDG_CACHE_HOME}/zsh/ ]]; then
mkdir -p ${XDG_CACHE_HOME}/zsh/
fi
compinit -d ${XDG_CACHE_HOME}/zsh/zcompdump-${ZSH_VERSION}
# 补全失败时的提示
zstyle ':completion:*:warnings' format $'\e[31m -- No Matches Found --\e[0m'
setopt complete_aliases # 补全别名
setopt list_packed # 补全列表压缩列宽
zstyle :compinstall filename ${XDG_CONFIG_HOME}/zsh/.zshrc
zstyle ':completion:*' menu select
# 模糊修正
zstyle ':completion:*' matcher-list '' 'm:{-a-zA-Z}={_A-Za-z}'
# fzf
if [[ -f /usr/share/fzf/completion.zsh ]]; then
source /usr/share/fzf/completion.zsh
fi
export FZF_COMPLETION_TRIGGER='~~'
export FZF_DEFAULT_COMMAND='fd -uu -E .git -E .node_modules'
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
compdef proxychains=command
# 当前环境的配置
_ZSH_HOSTRC_COMMAND=${XDG_CONFIG_HOME}/zsh/hostrc.d/funcs.zsh
if [[ -e $_ZSH_HOSTRC_COMMAND ]]; then
source $_ZSH_HOSTRC_COMMAND
fi
# >>>-----------------------------------
# 按键绑定 <<<--------------------------
# 默认Emacs
bindkey -e
# 用$EDITOR编辑命令
autoload -Uz edit-command-line
zle -N edit-command-line
bindkey '^X^E' edit-command-line
# fzf
if [[ -f /usr/share/fzf/key-bindings.zsh ]]; then
source /usr/share/fzf/key-bindings.zsh
fi
# 默认 WORDCHARS='*?_-.[]~=/&;!#$%^(){}<>'
export WORDCHARS='*?_-.[]~=&;!#$%^(){}<>'
# >>>-----------------------------------
# 提示符 <<<----------------------------
setopt prompt_subst
autoload -Uz promptinit
promptinit
autoload -Uz colors
colors
setopt transient_rprompt # 右提示符只出现一次
_ZSH_HOSTRC_PROMPT=${XDG_CONFIG_HOME}/zsh/hostrc.d/colors.zsh
if [[ -e $_ZSH_HOSTRC_PROMPT ]]; then
source $_ZSH_HOSTRC_PROMPT
fi
if [[ -n ${_SPEC_color_host} ]]; then
_color_host=${_SPEC_color_host}
else
_color_host=$'%{\e[38;2;199;146;234m%}'
fi
_color_invert=$'%{\e[7m%}'
_color_reset=$'%{\e[0m%}'
if [[ -z ${_SPEC_PROMPT_disable_icon} ]]; then
_icon_error="😈"
_icon_gitdir="  "
fi
ZLE_RPROMPT_INDENT=-1 # 去掉右提示符右侧多余空白
precmd() {
# 上一条命令的运行结果
if [ $? -ne 0 ]; then
PROMPT_err="%{$bg[red]$fg[black]%} ${_icon_error:-E} %{$reset_color%}"
else
PROMPT_err=""
fi
if command -v fish_collapsed_pwd &>/dev/null; then
_collapsed_pwd=$(fish_collapsed_pwd)
fi
PROMPT_host="${_color_host}${_color_invert} %n@%m ${_color_reset}"
# ssh标志
if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
PROMPT_ssh="%{$bg[yellow]$fg[black]%} ssh %{$reset_color%}"
else
PROMPT_ssh=""
fi
# tmux标志
if [ -n "$TMUX" ]; then
PROMPT_tmux="%{$bg[green]$fg[black]%} tmux %{$reset_color%}"
else
PROMPT_tmux=""
fi
# python virtualenv标志
if [ -n "$VIRTUAL_ENV" ]; then
PROMPT_pyvenv="%{$bg[cyan]$fg[white]%} pyvenv %{$reset_color%}"
else
PROMPT_pyvenv=""
fi
# nvm标志
if [ -n "$NVM_BIN" ]; then
PROMPT_nvm="%{$bg[cyan]$fg[white]%} nvm %{$reset_color%}"
else
PROMPT_nvm=""
fi
if command -v __git_ps1 &>/dev/null; then
PROMPT_git=$(__git_ps1 " %s${_icon_gitdir:-)}")
fi
PROMPT_cwd=${_collapsed_pwd}
if [[ $UID == 0 || $EUID == 0 ]]; then
PROMPT_tail=" # "
else
PROMPT_tail=" $ "
fi
PROMPT="${_color_host}${PROMPT_git} ${PROMPT_cwd}${PROMPT_tail}${_color_reset}"
RPROMPT="${PROMPT_err}${PROMPT_pyvenv}${PROMPT_nvm}${PROMPT_tmux}${PROMPT_ssh}${PROMPT_host}"
# 设置终端标题
print -n "\e]0;zsh ( ${_collapsed_pwd} )\a"
}
# git <<<-------------------------------
if [[ -f /usr/share/git/completion/git-prompt.sh ]]; then
source /usr/share/git/completion/git-prompt.sh
fi
GIT_PS1_SHOWDIRTYSTATE=1
GIT_PS1_SHOWSTASHSTATE=1
GIT_PS1_SHOWUNTRACKEDFILES=1
GIT_PS1_STATESEPARATOR=
GIT_PS1_SHOWUPSTREAM="auto"
GIT_PS1_DESCRIBE_STYLE="default"
# >>>-----------------------------------
# >>>-----------------------------------
# 命令别名 <<<-----------------------------
# sudo后面的命令可以是别名
alias sudo='sudo '
# 设置命令默认行为
alias ls='ls --color=auto --time-style=iso --human-readable'
alias grep='grep --color=auto'
alias diff='diff --color=auto'
alias mv='mv -i'
alias sl='ls'
alias l='ls -l'
alias la='ls -Al'
mcd() { mkdir -p $1 && cd $1 }
alias x='xdg-open'
alias v='nvim -R -c "nnoremap q :exit<CR>"' && compdef v=nvim # 使用neovim作为pager
if [[ -e $VIMRUNTIME ]]; then
alias e='nvr'
else
alias e='nvim' && compdef e=nvim
fi
alias g='git' && compdef g=git
alias py='python' && compdef py=python
alias config='/usr/bin/git --git-dir=$HOME/.myconf/ --work-tree=$HOME' && compdef config=git
alias config.edit='GIT_DIR=$HOME/.myconf GIT_WORK_TREE=$HOME nvim' && compdef config.edit=nvim
alias ssh='TERM=xterm-256color ssh'
alias mountdisk="mount | grep -E '^(/dev/sd|/dev/nvme|/dev/mmcblk|gvfsd-fuse)' | awk '{print \$1 \"\t\" \$5 \"\t\" \$3 \"\n\t\t\" \$6}'"
# >>>-----------------------------------
# vim: foldmethod=marker:foldmarker=<<<---,>>>---
source ${ZDOTDIR}/zshrc

4
.config/zsh/zprofile Normal file
View file

@ -0,0 +1,4 @@
# Autostart X
if systemctl -q is-active graphical.target && [[ ! $DISPLAY && $XDG_VTNR -eq 1 ]]; then
xinit qtile
fi

212
.config/zsh/zshrc Normal file
View file

@ -0,0 +1,212 @@
# 基础配置
setopt no_beep # 不响铃
setopt correct # 修正命令
setopt interactive_comments # 交互模式支持注释
fpath=(${ZDOTDIR}/functions ${ZDOTDIR}/Completion $fpath)
# 插件 <<<------------------------------
command -v antibody &>/dev/null && source <(antibody init) && \
antibody bundle <<EOF
skywind3000/z.lua
zsh-users/zsh-completions
zsh-users/zsh-autosuggestions
zsh-users/zsh-syntax-highlighting
EOF
# z.lua <<<-----------------------------
# 数据文件路径
export _ZL_DATA=${XDG_DATA_HOME}/zsh/zlua
# 仅在当前路径$PWD改变时才更新数据库
export _ZL_ADD_ONCE=1
# 在跳转后显示目标路径名称
export _ZL_ECHO=1
# 增强匹配模式
export _ZL_MATCH_MODE=1
# >>>-----------------------------------
# zsh-autosuggestions <<<---------------
# 建议策略: history, completion, match_prev_cmd
ZSH_AUTOSUGGEST_STRATEGY=(history completion)
# 开启异步模式
ZSH_AUTOSUGGEST_USE_ASYNC=1
# >>>-----------------------------------
# pkgfile: 命令找不到时提示安装包
if [[ -f /usr/share/doc/pkgfile/command-not-found.zsh ]]; then
source /usr/share/doc/pkgfile/command-not-found.zsh
fi
# function: 模仿fish折叠路径
autoload -Uz fish_collapsed_pwd
# >>>-----------------------------------
# 历史记录 <<<--------------------------
HISTSIZE=10000
SAVEHIST=100000
setopt share_history
# 去掉重复和空白
setopt hist_ignore_dups hist_reduce_blanks hist_find_no_dups
# >>>-----------------------------------
# 命令补全 <<<--------------------------
autoload -Uz compinit
# 指定缓存文件所在目录必须先确保该目录存在
if [[ ! -d ${XDG_CACHE_HOME}/zsh/ ]]; then
mkdir -p ${XDG_CACHE_HOME}/zsh/
fi
compinit -d ${XDG_CACHE_HOME}/zsh/zcompdump-${ZSH_VERSION}
# 补全失败时的提示
zstyle ':completion:*:warnings' format $'\e[31m -- No Matches Found --\e[0m'
setopt complete_aliases # 补全别名
setopt list_packed # 补全列表压缩列宽
zstyle :compinstall filename ${ZDOTDIR}/zshrc
zstyle ':completion:*' menu select
# 模糊修正
zstyle ':completion:*' matcher-list '' 'm:{-a-zA-Z}={_A-Za-z}'
# fzf
if [[ -f /usr/share/fzf/completion.zsh ]]; then
source /usr/share/fzf/completion.zsh
fi
export FZF_COMPLETION_TRIGGER='~~'
export FZF_DEFAULT_COMMAND='fd -uu -E .git -E .node_modules'
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
compdef proxychains=command
# 当前环境的配置
for i in ${ZDOTDIR}/hostrc.d/*.zsh; do
if [[ -f $i ]]; then
source $i
fi
done; unset i
# >>>-----------------------------------
# 按键绑定 <<<--------------------------
# 默认Emacs
bindkey -e
# 用$EDITOR编辑命令
autoload -Uz edit-command-line
zle -N edit-command-line
bindkey '^X^E' edit-command-line
# fzf
if [[ -f /usr/share/fzf/key-bindings.zsh ]]; then
source /usr/share/fzf/key-bindings.zsh
fi
# 默认 WORDCHARS='*?_-.[]~=/&;!#$%^(){}<>'
export WORDCHARS='*?_-.[]~=&;!#$%^(){}<>'
# >>>-----------------------------------
# 提示符 <<<----------------------------
setopt prompt_subst
autoload -Uz promptinit
promptinit
autoload -Uz colors
colors
setopt transient_rprompt # 右提示符只出现一次
if [[ -n ${_SPEC_color_host} ]]; then
_color_host=${_SPEC_color_host}
else
_color_host=$'%{\e[38;2;199;146;234m%}'
fi
_color_invert=$'%{\e[7m%}'
_color_reset=$'%{\e[0m%}'
if [[ -z ${_SPEC_PROMPT_disable_icon} ]]; then
_icon_error="😈"
_icon_gitdir="  "
fi
ZLE_RPROMPT_INDENT=-1 # 去掉右提示符右侧多余空白
precmd() {
# 上一条命令的运行结果
if [ $? -ne 0 ]; then
PROMPT_err="%{$bg[red]$fg[black]%} ${_icon_error:-E} %{$reset_color%}"
else
PROMPT_err=""
fi
if command -v fish_collapsed_pwd &>/dev/null; then
_collapsed_pwd=$(fish_collapsed_pwd)
fi
PROMPT_host="${_color_host}${_color_invert} %n@%m ${_color_reset}"
# ssh标志
if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
PROMPT_ssh="%{$bg[yellow]$fg[black]%} ssh %{$reset_color%}"
else
PROMPT_ssh=""
fi
# tmux标志
if [ -n "$TMUX" ]; then
PROMPT_tmux="%{$bg[green]$fg[black]%} tmux %{$reset_color%}"
else
PROMPT_tmux=""
fi
# python virtualenv标志
if [ -n "$VIRTUAL_ENV" ]; then
PROMPT_pyvenv="%{$bg[cyan]$fg[white]%} pyvenv %{$reset_color%}"
else
PROMPT_pyvenv=""
fi
# nvm标志
if [ -n "$NVM_BIN" ]; then
PROMPT_nvm="%{$bg[cyan]$fg[white]%} nvm %{$reset_color%}"
else
PROMPT_nvm=""
fi
if command -v __git_ps1 &>/dev/null; then
PROMPT_git=$(__git_ps1 " %s${_icon_gitdir:-)}")
fi
PROMPT_cwd=${_collapsed_pwd}
if [[ $UID == 0 || $EUID == 0 ]]; then
PROMPT_tail=" # "
else
PROMPT_tail=" $ "
fi
PROMPT="${_color_host}${PROMPT_git} ${PROMPT_cwd}${PROMPT_tail}${_color_reset}"
RPROMPT="${PROMPT_err}${PROMPT_pyvenv}${PROMPT_nvm}${PROMPT_tmux}${PROMPT_ssh}${PROMPT_host}"
# 设置终端标题
print -n "\e]0;zsh ( ${_collapsed_pwd} )\a"
}
# git <<<-------------------------------
if [[ -f /usr/share/git/completion/git-prompt.sh ]]; then
source /usr/share/git/completion/git-prompt.sh
fi
GIT_PS1_SHOWDIRTYSTATE=1
GIT_PS1_SHOWSTASHSTATE=1
GIT_PS1_SHOWUNTRACKEDFILES=1
GIT_PS1_STATESEPARATOR=
GIT_PS1_SHOWUPSTREAM="auto"
GIT_PS1_DESCRIBE_STYLE="default"
# >>>-----------------------------------
# >>>-----------------------------------
# 命令别名 <<<-----------------------------
# sudo后面的命令可以是别名
alias sudo='sudo '
# 设置命令默认行为
alias ls='ls --color=auto --time-style=iso --human-readable'
alias grep='grep --color=auto'
alias diff='diff --color=auto'
alias mv='mv -i'
alias sl='ls'
alias l='ls -l'
alias la='ls -Al'
mcd() { mkdir -p $1 && cd $1 }
alias x='xdg-open'
alias v='nvim -R -c "nnoremap q :exit<CR>"' && compdef v=nvim # 使用neovim作为pager
if [[ -e $VIMRUNTIME ]]; then
alias e='nvr'
else
alias e='nvim' && compdef e=nvim
fi
alias g='git' && compdef g=git
alias py='python' && compdef py=python
alias config='/usr/bin/git --git-dir=$HOME/.myconf/ --work-tree=$HOME' && compdef config=git
alias config.edit='GIT_DIR=$HOME/.myconf GIT_WORK_TREE=$HOME nvim' && compdef config.edit=nvim
alias ssh='TERM=xterm-256color ssh'
alias mountdisk="mount | grep -E '^(/dev/sd|/dev/nvme|/dev/mmcblk|gvfsd-fuse)' | awk '{print \$1 \"\t\" \$5 \"\t\" \$3 \"\n\t\t\" \$6}'"
# >>>-----------------------------------
# vim: foldmethod=marker:foldmarker=<<<---,>>>---