blob: d86f1e56964f22aedabba0bdfa410ad9b66640bf (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
# ███████╗███████╗██╗ ██╗██████╗ ██████╗
# ╚══███╔╝██╔════╝██║ ██║██╔══██╗██╔════╝
# ███╔╝ ███████╗███████║██████╔╝██║
# ███╔╝ ╚════██║██╔══██║██╔══██╗██║
# ███████╗███████║██║ ██║██║ ██║╚██████╗
# ╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝
# Profile zsh time
#zmodload zsh/zprof
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
# Terminal key bindings
#stty intr '^q' # Free Ctrl+C for copy use Ctrl+Q instead for Interrupt
stty lnext '^-' # Free Ctrl+V for paste use Ctrl+- instead for Literal next
stty stop undef # Disable Ctrl+S to freeze terminal
stty start undef # Disable Ctrl+Q nfreeze terminal
# Set the current prompt file (e.g., prompt, or prompt_minimal)
ZSH_PROMPT="${ZSH_PROMPT:-prompt}"
#ZSH_PROMPT="${ZSH_PROMPT:-prompt_minimal}"
#ZSH_PROMPT="${ZSH_PROMPT:-prompt_new}"
#ZSH_PROMPT="${ZSH_PROMPT:-prompt_simple}"
# Source common Zsh files (excluding any that start with 'prompt')
ZSH_SOURCES=()
for zsh_source in "$HOME"/.config/zsh/user/*.zsh; do
if [[ $(basename "$zsh_source") == prompt* && $(basename "$zsh_source" .zsh) != "$ZSH_PROMPT" ]]; then
continue
fi
ZSH_SOURCES+=("$zsh_source")
done
# Faster SSH
if [[ -n "$SSH_CLIENT" ]]; then
export KEYTIMEOUT=10
else
export KEYTIMEOUT=15
fi
# Prevent non-login shell anomalies or toolchain misidentification in VS Code
#[[ "$TERM_PROGRAM" == "vscode" ]] && unset ARGV0
#[[ -n "$TERM_PROGRAM" && "$TERM_PROGRAM" == "vscode" ]] && unset ARGV0
if [[ "${TERM_PROGRAM:-}" == "vscode" ]]; then
unset ARGV0
fi
# Tmux default session
#if [ "$TERM_PROGRAM" != "vscode" ] && command -v tmux &> /dev/null && [ -n "$PS1" ] && [ -n "$DISPLAY" ] && [ -z "$TMUX" ]; then
# if ! tmux list-sessions | grep -q '^tmux:'; then
# tmux new -s tmux
# fi
#fi
# Enable various options for Zsh behavior
setopt interactive_comments # Allow comments to appear in interactive mode
unsetopt BEEP # Disable the system beep (to prevent annoying beeps)
setopt extendedglob # Enable extended globbing for complex pattern matching
setopt nomatch # Prevent errors when a glob pattern doesn't match any files
setopt notify # Notify when background jobs complete
setopt completeinword # Allow tab completion within words
setopt prompt_subst # Allow prompt variables to be substituted
# Enable automatic directory navigation
setopt autocd # Automatically change to a directory if the directory name is typed alone
setopt AUTO_PUSHD # Save more directory history, and use "cd -" with tab completion
# Optional: Uncomment to disable waiting dots on completion
# COMPLETION_WAITING_DOTS="false"
# Hide history of commands starting with a space
setopt histignorespace # Do not save commands that start with a space in the history
# Source ZSH files
for zsh_source in "${ZSH_SOURCES[@]}"; do
source "$zsh_source"
done
########## Source Plugins, should be last ##########
#source /usr/share/nvm/init-nvm.sh
# Load fzf keybindings and completion if fzf is installed
if command -v fzf >/dev/null 2>&1; then
FZF_BASE="/usr/local/bin/fzf/shell"
[[ -f "${FZF_BASE}/key-bindings.zsh" ]] && source "${FZF_BASE}/key-bindings.zsh"
[[ -f "${FZF_BASE}/completion.zsh" ]] && source "${FZF_BASE}/completion.zsh"
fi
# Source plugins
for plugin in \
"$HOME/.config/zsh/plugins/zsh-you-should-use/you-should-use.plugin.zsh" \
"$HOME/.config/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" \
"$HOME/.config/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.plugin.zsh" \
"$HOME/.config/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh"
do
[ -f "$plugin" ] && source "$plugin"
done
DISABLE_MAGIC_FUNCTIONS=true
# Zoxide (cd alternative)
if command -v zoxide >/dev/null 2>&1; then
eval "$(zoxide init zsh)"
fi
# Profile zsh time
#zprof # At the end of .zshrc
|