mirror of
https://github.com/rydesun/dotfiles.git
synced 2025-12-26 14:44:58 +08:00
Update zsh config: new path
This commit is contained in:
parent
4ba4c64705
commit
fb0d570b95
4 changed files with 218 additions and 220 deletions
|
|
@ -1,4 +1 @@
|
|||
# Autostart X
|
||||
if systemctl -q is-active graphical.target && [[ ! $DISPLAY && $XDG_VTNR -eq 1 ]]; then
|
||||
xinit qtile
|
||||
fi
|
||||
source ${ZDOTDIR}/zprofile
|
||||
|
|
|
|||
|
|
@ -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
4
.config/zsh/zprofile
Normal 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
212
.config/zsh/zshrc
Normal 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=<<<---,>>>---
|
||||
Loading…
Add table
Add a link
Reference in a new issue