From e5d07895db158a848fa33c2ec1096fa13beeea37 Mon Sep 17 00:00:00 2001 From: gwbeip Date: Tue, 20 Jan 2026 16:16:38 +0800 Subject: [PATCH] deprecate oh-my-zsh framework --- .../config_new_archlinux_in_wsl.md | 0 zsh/alias/alias.sh | 108 ++++++++++++++ zsh/plugins/.gitignore | 2 + zsh/zshrc | 136 +++++------------- 4 files changed, 146 insertions(+), 100 deletions(-) rename config_new_archlinux_in_wsl.md => wsl/config_new_archlinux_in_wsl.md (100%) create mode 100644 zsh/alias/alias.sh create mode 100644 zsh/plugins/.gitignore diff --git a/config_new_archlinux_in_wsl.md b/wsl/config_new_archlinux_in_wsl.md similarity index 100% rename from config_new_archlinux_in_wsl.md rename to wsl/config_new_archlinux_in_wsl.md diff --git a/zsh/alias/alias.sh b/zsh/alias/alias.sh new file mode 100644 index 0000000..a6c8542 --- /dev/null +++ b/zsh/alias/alias.sh @@ -0,0 +1,108 @@ +# Advanced Aliases. +# Use with caution +# +alias -g ...='../..' +alias -g ....='../../..' +alias -g .....='../../../..' +alias -g ......='../../../../..' + +alias -- -='cd -' +alias 1='cd -1' +alias 2='cd -2' +alias 3='cd -3' +alias 4='cd -4' +alias 5='cd -5' +alias 6='cd -6' +alias 7='cd -7' +alias 8='cd -8' +alias 9='cd -9' + +# ls, the common ones I use a lot shortened for rapid fire usage +alias ls='ls --color=auto' +alias l='ls -lFh' #size,show type,human readable +alias la='ls -lAFh' #long list,show almost all,show type,human readable +alias lr='ls -tRFh' #sorted by date,recursive,show type,human readable +alias lt='ls -ltFh' #long list,sorted by date,show type,human readable +alias ll='ls -l' #long list +alias ldot='ls -ld .*' +alias lS='ls -1FSsh' +alias lart='ls -1Fcart' +alias lrt='ls -1Fcrt' +alias lsr='ls -lARFh' #Recursive list of files and directories +alias lsn='ls -1' #A column contains name of files and directories + +alias zshrc='${=EDITOR} ${ZDOTDIR:-$HOME}/.zshrc' # Quick access to the .zshrc file + +alias grep='grep --color' +alias sgrep='grep -R -n -H -C 5 --exclude-dir={.git,.svn,CVS} ' + +alias t='tail -f' + +# Command line head / tail shortcuts +alias -g H='| head' +alias -g T='| tail' +alias -g G='| grep' +alias -g L="| less" +alias -g M="| most" +alias -g LL="2>&1 | less" +alias -g CA="2>&1 | cat -A" +alias -g NE="2> /dev/null" +alias -g NUL="> /dev/null 2>&1" +alias -g P="2>&1| pygmentize -l pytb" + +alias dud='du -d 1 -h' +(( $+commands[duf] )) || alias duf='du -sh *' +(( $+commands[fd] )) || alias fd='find . -type d -name' +alias ff='find . -type f -name' + +alias h='history' +alias hgrep="fc -El 0 | grep" +alias help='man' +alias p='ps -f' +alias sortnr='sort -n -r' +alias unexport='unset' + +alias rm='rm -i' +alias cp='cp -i' +alias mv='mv -i' + +# zsh is able to auto-do some kungfoo +# depends on the SUFFIX :) +autoload -Uz is-at-least +if is-at-least 4.2.0; then + # open browser on urls + if [[ -n "$BROWSER" ]]; then + _browser_fts=(htm html de org net com at cx nl se dk) + for ft in $_browser_fts; do alias -s $ft='$BROWSER'; done + fi + + _editor_fts=(cpp cxx cc c hh h inl asc txt TXT tex) + for ft in $_editor_fts; do alias -s $ft='$EDITOR'; done + + if [[ -n "$XIVIEWER" ]]; then + _image_fts=(jpg jpeg png gif mng tiff tif xpm) + for ft in $_image_fts; do alias -s $ft='$XIVIEWER'; done + fi + + _media_fts=(ape avi flv m4a mkv mov mp3 mpeg mpg ogg ogm rm wav webm) + for ft in $_media_fts; do alias -s $ft=mplayer; done + + #read documents + alias -s pdf=acroread + alias -s ps=gv + alias -s dvi=xdvi + alias -s chm=xchm + alias -s djvu=djview + + #list whats inside packed file + alias -s zip="unzip -l" + alias -s rar="unrar l" + alias -s tar="tar tf" + alias -s tar.gz="echo " + alias -s ace="unace l" +fi + +alias py='python3' + +# Make zsh know about hosts already accessed by SSH +zstyle -e ':completion:*:(ssh|scp|sftp|rsh|rsync):hosts' hosts 'reply=(${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) /dev/null)"}%%[# ]*}//,/ })' diff --git a/zsh/plugins/.gitignore b/zsh/plugins/.gitignore new file mode 100644 index 0000000..c96a04f --- /dev/null +++ b/zsh/plugins/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file diff --git a/zsh/zshrc b/zsh/zshrc index d202157..c4cdab7 100644 --- a/zsh/zshrc +++ b/zsh/zshrc @@ -1,93 +1,44 @@ -# If you come from bash you might have to change your $PATH. -# export PATH=$HOME/bin:$HOME/.local/bin:/usr/local/bin:$PATH +# Path to zsh-polyjuice installation +export ZSH_POLYJUICE_PATH="$HOME/.TerminalPolyjuice" +export ZSH_PLUGIN_PATH="$ZSH_POLYJUICE_PATH/zsh/plugins" +export ZSH_ALIAS_PATH="$ZSH_POLYJUICE_PATH/zsh/alias" -# Path to your Oh My Zsh installation. -export ZSH="$HOME/.oh-my-zsh" +# Command History related settings +HISTFILE=$HOME/.zsh_history +HISTSIZE=10000 +SAVEHIST=10000 +setopt append_history # 退出时追加到历史文件 +setopt inc_append_history # 命令执行后立即写入历史文件 +setopt share_history # 在多个终端间共享历史 +setopt hist_ignore_dups # 忽略重复的命令 +setopt hist_reduce_blanks # 合并连续的空命令 +# setopt hist_verify # 通过 fc 编辑历史命令后再执行 +# setopt extended_history # 记录时间戳 +# setopt hist_expire_dups_first # 先删除重复的命令再根据大小删除 +# setopt hist_find_no_dups # 搜索历史时忽略重复项 +# setopt hist_save_no_dups # 保存历史时忽略重复项 -# Set name of the theme to load --- if set to "random", it will -# load a random theme each time Oh My Zsh is loaded, in which case, -# to know which specific one was loaded, run: echo $RANDOM_THEME -# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes -# ZSH_THEME="powerlevel10k/powerlevel10k" +# Load Plugins +source $ZSH_PLUGIN_PATH/zsh-autosuggestions/zsh-autosuggestions.zsh +ZSH_AUTOSUGGEST_STRATEGY=(history completion) +ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=20 +bindkey '^[l' autosuggest-accept # alt-L to accept autosuggestion +source $ZSH_PLUGIN_PATH/zsh-autocomplete/zsh-autocomplete.plugin.zsh +source $ZSH_PLUGIN_PATH/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh -# Set list of themes to pick from when loading at random -# Setting this variable when ZSH_THEME=random will cause zsh to load -# a theme from this variable instead of looking in $ZSH/themes/ -# If set to an empty array, this variable will have no effect. -# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" ) +# Load Aliases +source $ZSH_ALIAS_PATH/alias.sh -# Uncomment the following line to use case-sensitive completion. -# CASE_SENSITIVE="true" - -# Uncomment the following line to use hyphen-insensitive completion. -# Case-sensitive completion must be off. _ and - will be interchangeable. -# HYPHEN_INSENSITIVE="true" - -# Uncomment one of the following lines to change the auto-update behavior -# zstyle ':omz:update' mode disabled # disable automatic updates -# zstyle ':omz:update' mode auto # update automatically without asking -# zstyle ':omz:update' mode reminder # just remind me to update when it's time - -# Uncomment the following line to change how often to auto-update (in days). -# zstyle ':omz:update' frequency 13 - -# Uncomment the following line if pasting URLs and other text is messed up. -# DISABLE_MAGIC_FUNCTIONS="true" - -# Uncomment the following line to disable colors in ls. -# DISABLE_LS_COLORS="true" - -# Uncomment the following line to disable auto-setting terminal title. -# DISABLE_AUTO_TITLE="true" - -# Uncomment the following line to enable command auto-correction. -# ENABLE_CORRECTION="true" - -# Uncomment the following line to display red dots whilst waiting for completion. -# You can also set it to another string to have that shown instead of the default red dots. -# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f" -# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765) -# COMPLETION_WAITING_DOTS="true" - -# Uncomment the following line if you want to disable marking untracked files -# under VCS as dirty. This makes repository status check for large repositories -# much, much faster. -# DISABLE_UNTRACKED_FILES_DIRTY="true" - -# Uncomment the following line if you want to change the command execution time -# stamp shown in the history command output. -# You can set one of the optional three formats: -# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" -# or set a custom format using the strftime function format specifications, -# see 'man strftime' for details. -# HIST_STAMPS="mm/dd/yyyy" - -# Would you like to use another custom folder than $ZSH/custom? -# ZSH_CUSTOM=/path/to/new-custom-folder - -# Which plugins would you like to load? -# Standard plugins can be found in $ZSH/plugins/ -# Custom plugins may be added to $ZSH_CUSTOM/plugins/ -# Example format: plugins=(rails git textmate ruby lighthouse) -# Add wisely, as too many plugins slow down shell startup. -plugins=( - zsh-autosuggestions - zsh-syntax-highlighting - zsh-autocomplete - zsh-interactive-cd - zoxide - fzf - python -) - -source $ZSH/oh-my-zsh.sh - -# User configuration - -# export MANPATH="/usr/local/man:$MANPATH" +# zoxide +if (( $+commands[zoxide] )); then + eval "$(zoxide init --cmd ${ZOXIDE_CMD_OVERRIDE:-z} zsh)" +else + echo '[oh-my-zsh] zoxide not found, please install it from https://github.com/ajeetdsouza/zoxide' +fi # You may need to manually set your language environment -# export LANG=en_US.UTF-8 +export LANG=en_US.UTF-8 +export LC_ALL=C.UTF-8 # Preferred editor for local and remote sessions # if [[ -n $SSH_CONNECTION ]]; then @@ -96,22 +47,7 @@ source $ZSH/oh-my-zsh.sh # export EDITOR='nvim' # fi -# Compilation flags -# export ARCHFLAGS="-arch $(uname -m)" - -# Set personal aliases, overriding those provided by Oh My Zsh libs, -# plugins, and themes. Aliases can be placed here, though Oh My Zsh -# users are encouraged to define aliases within a top-level file in -# the $ZSH_CUSTOM folder, with .zsh extension. Examples: -# - $ZSH_CUSTOM/aliases.zsh -# - $ZSH_CUSTOM/macos.zsh -# For a full list of active aliases, run `alias`. -# -# Example aliases -# alias zshconfig="mate ~/.zshrc" -# alias ohmyzsh="mate ~/.oh-my-zsh" - -# Homebrew tsinghua mirror for macOS +# Homebrew Tsinghua mirror for macOS function brewthu() { if [[ $HOMEBREW_BOTTLE_DOMAIN = "" ]]; then export HOMEBREW_API_DOMAIN="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles/api"