mirror of
https://github.com/js0ny/dotfiles.git
synced 2025-12-21 08:43:00 +00:00
feat(zsh): Finished reorganise zsh with a same entry point for all platforms
This commit is contained in:
parent
bd5ca49c3e
commit
2b21b63a13
22 changed files with 503 additions and 369 deletions
89
tools/zsh/mod/alias.zsh
Normal file
89
tools/zsh/mod/alias.zsh
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
# $DOTFILES/tools/zsh/mod/alias.zsh
|
||||
# Sourced by user's zshrc 在用户的 zshrc 中被引用
|
||||
|
||||
# PowerShell Equivalent, for cross-platform compatibility
|
||||
alias ni=touch
|
||||
alias cls=clear
|
||||
alias ii=open
|
||||
|
||||
# Dev #
|
||||
alias gpp='g++ -std=c++2b' # Set the default C++ standard to C++20
|
||||
alias gcc='gcc -std=c99' # Set the default C standard to C99
|
||||
alias cl='clang -std=c99'
|
||||
alias clpp='clang++ -std=c++2b'
|
||||
alias python=python3 # Set the default Python version to Python 3
|
||||
alias py=python # Alias for Python
|
||||
alias pip=pip3 # Alias for pip
|
||||
# alias bashcfg="nvim ~/.bashrc"
|
||||
alias zshcfg="nvim $ZDOTDIR/.zshrc"
|
||||
alias shcfg=zshcfg
|
||||
alias reload="source $ZDOTDIR/.zshrc"
|
||||
alias nvimrc="nvim $XDG_CONFIG_HOME/nvim/"
|
||||
alias pulldots="cd $DOTFILES && git pull"
|
||||
|
||||
# Editors #
|
||||
alias v=nvim
|
||||
alias c=code
|
||||
alias sv="sudo vim"
|
||||
alias sn="sudo nvim"
|
||||
|
||||
# lsd - modern ls
|
||||
if command -v lsd > /dev/null; then
|
||||
alias ls='lsd -A'
|
||||
alias l='lsd -lah'
|
||||
alias ll='lsd -l'
|
||||
alias tree='lsd --tree'
|
||||
fi
|
||||
|
||||
# Functions #
|
||||
mkcd() {
|
||||
mkdir -p $1 && cd $1
|
||||
}
|
||||
cdls(){
|
||||
cd $1 && ls
|
||||
}
|
||||
tc(){
|
||||
touch $1 && code $1
|
||||
}
|
||||
tv(){
|
||||
touch $1 && nvim $1
|
||||
}
|
||||
|
||||
# Use neovide as gVim
|
||||
gvi() {
|
||||
local target=$1
|
||||
|
||||
if command -v neovide.exe > /dev/null; then
|
||||
neovide.exe "$target"
|
||||
else
|
||||
if command -v neovide > /dev/null; then
|
||||
neovide "$target"
|
||||
else
|
||||
echo "neovide is not installed"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
alias update="source $DOTFILES/scripts/update.zsh"
|
||||
|
||||
if command -v pacman > /dev/null; then
|
||||
alias pac="sudo pacman"
|
||||
alias paci="sudo pacman -S"
|
||||
alias pacr="sudo pacman -R"
|
||||
alias pacu="sudo pacman -Syu"
|
||||
fi
|
||||
|
||||
if command -v apt > /dev/null; then
|
||||
alias apt="sudo apt"
|
||||
alias apti="sudo apt install"
|
||||
alias aptu="sudo apt update && sudo apt upgrade"
|
||||
alias aptr="sudo apt autoremove && sudo apt remove"
|
||||
fi
|
||||
|
||||
if command -v brew > /dev/null; then
|
||||
alias brewi="brew install"
|
||||
alias brewu="brew update && brew upgrade"
|
||||
alias brewc="brew cleanup"
|
||||
alias brewr="brew uninstall"
|
||||
fi
|
||||
41
tools/zsh/mod/config.zsh
Normal file
41
tools/zsh/mod/config.zsh
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
# $DOTFILES/tools/zsh/mod/config.zsh
|
||||
# Sourced by user's zshrc 在用户的 zshrc 中被引用
|
||||
|
||||
# ZSH Config, no need to `export` these variables
|
||||
HISTFILE="$XDG_STATE_HOME"/zsh/history
|
||||
HIST_STAMPS="yyyy-mm-dd"
|
||||
HISTSIZE=10000
|
||||
SAVEHIST=10000
|
||||
|
||||
|
||||
# Manually manage plugins 手动管理插件
|
||||
# Load zsh-syntax-highlighting before zsh-history-substring-search
|
||||
# Reference: https://github.com/zsh-users/zsh-history-substring-search?tab=readme-ov-file#usage
|
||||
plugins=(
|
||||
"zsh-autosuggestions"
|
||||
"zsh-syntax-highlighting"
|
||||
"zsh-history-substring-search"
|
||||
)
|
||||
|
||||
plugin_dir="$ZDOTDIR/plugins"
|
||||
|
||||
for plugin in "${plugins[@]}"; do
|
||||
plugin_path="$plugin_dir/$plugin/$plugin.zsh"
|
||||
if [[ -f $plugin_path ]]; then
|
||||
source "$plugin_path"
|
||||
else
|
||||
echo "Warning: Plugin not found: $plugin_path"
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
# https://unix.stackexchange.com/questions/33994/
|
||||
# Use `set -k` to mark leading `#` as a comment character
|
||||
set -k
|
||||
|
||||
# TODO: Below should be reorganized
|
||||
export PATH=$HOME/bin:$HOME/.local/bin:/usr/local/bin:$PATH
|
||||
export PATH=$HOME/.local/share/gem/ruby/3.3.0/bin:$PATH # Ruby Executables
|
||||
|
||||
export NVM_DIR="$HOME/.config/nvm"
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
||||
46
tools/zsh/mod/keymap.zsh
Normal file
46
tools/zsh/mod/keymap.zsh
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
# $DOTFILES/tools/zsh/mod/keymap.zsh
|
||||
# Sourced by user's zshrc 在用户的 zshrc 中被引用
|
||||
|
||||
|
||||
bindkey -v # Vi Keybindings
|
||||
|
||||
# Colemak hnei
|
||||
# ^
|
||||
# n
|
||||
# < h i >
|
||||
# e
|
||||
# v
|
||||
# bindkey -M vicmd 'h' vi-backward-char # No change
|
||||
bindkey -M vicmd 'n' down-line-or-history
|
||||
bindkey -M vicmd 'e' up-line-or-history
|
||||
bindkey -M vicmd 'i' vi-forward-char
|
||||
|
||||
# Similar position to [i] in QWERTY
|
||||
bindkey -M vicmd 'l' vi-insert
|
||||
bindkey -M vicmd 'L' vi-insert-bol
|
||||
# Ne{[k]s}t
|
||||
bindkey -M vicmd 'k' vi-repeat-search
|
||||
bindkey -M vicmd 'K' vi-rev-repeat-search
|
||||
# [J]ump
|
||||
bindkey -M vicmd 'j' vi-forward-word-end
|
||||
bindkey -M vicmd 'J' vi-forward-blank-word-end
|
||||
# Use N to Join
|
||||
bindkey -M vicmd 'N' vi-join
|
||||
|
||||
# Emacs Hybrid
|
||||
bindkey '^A' beginning-of-line
|
||||
bindkey '^E' end-of-line
|
||||
bindkey '^F' forward-char
|
||||
bindkey '^B' backward-char
|
||||
bindkey '^P' up-line-or-history
|
||||
bindkey '^N' down-line-or-history
|
||||
bindkey '^R' history-incremental-search-backward
|
||||
# TODO: did not test
|
||||
bindkey '^K' kill-line
|
||||
bindkey '^X^E' edit-command-line
|
||||
|
||||
# LEADER CONVENTION
|
||||
# ^X defines as a prefix key in shell
|
||||
# ^A defines as a prefix key in tmux
|
||||
# ^B defines as a prefix key in Terminal Emulators
|
||||
# SPC defines as a prefix key in nvim
|
||||
39
tools/zsh/mod/navi.zsh
Normal file
39
tools/zsh/mod/navi.zsh
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
# $DOTFILES/tools/zsh/mod/navi.zsh
|
||||
# Sourced by user's zshrc 在用户的 zshrc 中被引用
|
||||
|
||||
# Relative navigation #
|
||||
alias ..="cd .."
|
||||
alias ...="cd ../.."
|
||||
alias ....="cd ../../.."
|
||||
alias .....="cd ../../../.."
|
||||
alias ......="cd ../../../../.."
|
||||
|
||||
# Use `-` to jump to the previous directory
|
||||
# Oh-My-Zsh defines a similar one
|
||||
function - { cd - }
|
||||
|
||||
# Use `z` to jump to a directory
|
||||
eval "$(zoxide init zsh)"
|
||||
|
||||
# Absolute navigation #
|
||||
alias dotfiles="cd $DOTFILES && ls"
|
||||
# TODO: Test on WSL
|
||||
if [ "$IS_WSL" = true ]; then # IS_WSL is defined in $DOTFILES/platforms/wsl/zshrc
|
||||
alias dt="cd /mnt/c/Users/$(whoami)/Desktop && ls"
|
||||
alias doku="cd /mnt/c/Users/$(whoami)/Documents && ls"
|
||||
alias down="cd /mnt/c/Users/$(whoami)/Downloads && ls"
|
||||
alias src="cd /mnt/d/Source"
|
||||
alias one="cd /mnt/c/Users/$(whoami)/OneDrive"
|
||||
alias gdrive="cd /mnt/g"
|
||||
else
|
||||
alias dt="cd $HOME/Desktop && ls"
|
||||
alias doku="cd $HOME/Documents && ls"
|
||||
alias down="cd $HOME/Downloads && ls"
|
||||
alias src="cd $HOME/Documents/Source"
|
||||
fi
|
||||
|
||||
# macOS specific, no OneDrive & Google Drive on Linux
|
||||
if [ "$(uname)" = "Darwin" ]; then
|
||||
alias one="cd $HOME/OneDrive"
|
||||
alias gdrive="cd $HOME/Google\ Drive"
|
||||
fi
|
||||
6
tools/zsh/mod/prompt.zsh
Normal file
6
tools/zsh/mod/prompt.zsh
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
# $DOTFILES/tools/zsh/mod/prompt.zsh
|
||||
# Sourced by user's zshrc 在用户的 zshrc 中被引用
|
||||
|
||||
export STARSHIP_CONFIG=$DOTFILES/tools/starship/starship_zsh.toml
|
||||
|
||||
eval "$(starship init zsh)"
|
||||
Loading…
Add table
Add a link
Reference in a new issue