summaryrefslogtreecommitdiff
path: root/.zshrc
diff options
context:
space:
mode:
Diffstat (limited to '.zshrc')
-rw-r--r--.zshrc107
1 files changed, 107 insertions, 0 deletions
diff --git a/.zshrc b/.zshrc
new file mode 100644
index 0000000..03c8cda
--- /dev/null
+++ b/.zshrc
@@ -0,0 +1,107 @@
+# Fix for tmux on openSuse with WSL2
+export TMUX_TMPDIR='/tmp'
+
+# Directory to store zinit and plugins
+ZINIT_HOME="${XDG_DATA_HOME:-${HOME}/.local/share}/zinit/zinit.git"
+
+# Download zinit if it doesn't exist yet
+if [ ! -d "$ZINIT_HOME" ]; then
+ mkdir -p "$(dirname $ZINIT_HOME)"
+ git clone https://github.com/zdharma-continuum/zinit.git "$ZINIT_HOME"
+fi
+
+# Load zinit
+source "${ZINIT_HOME}/zinit.zsh"
+
+# Zsh plugins
+zinit light zsh-users/zsh-syntax-highlighting
+zinit light zsh-users/zsh-completions
+zinit light zsh-users/zsh-autosuggestions
+zinit light Aloxaf/fzf-tab
+
+# Zsh snippets
+zinit snippet OMZP::git
+zinit snippet OMZP::sudo
+zinit snippet OMZP::kubectl
+zinit snippet OMZP::kubectx
+zinit snippet OMZP::command-not-found
+
+# Enable rustup tab completion for zsh - https://rust-lang.github.io/rustup/installation/index.html
+fpath+=~/.zfunc
+
+# Load completions
+autoload -Uz compinit && compinit
+
+zinit cdreplay -q
+
+# Setup hooks for VIMODE in zsh
+function zle-keymap-select {
+ if [[ ${KEYMAP} == vicmd ]]; then
+ export VIMODE="NORMAL"
+ else
+ export VIMODE="INSERT"
+ fi
+ zle && zle reset-prompt
+}
+
+function zle-line-init {
+ export VIMODE="INSERT"
+ zle && zle reset-prompt
+}
+
+function zle-line-finish {
+ export VIMODE="INSERT"
+ zle && zle reset-prompt
+}
+
+zle -N zle-keymap-select
+zle -N zle-line-init
+zle -N zle-line-finish
+
+# Keybindings
+bindkey -v
+bindkey '^y' autosuggest-accept
+bindkey '^k' history-search-backward
+bindkey '^j' history-search-forward
+bindkey '^[w' kill-region
+
+# History
+HISTSIZE=5000
+HISTFILE=~/.zsh_history
+SAVEHIST=$HISTSIZE
+HISTDUP=erase
+setopt appendhistory
+setopt sharehistory
+setopt hist_ignore_space
+setopt hist_ignore_all_dups
+setopt hist_save_no_dups
+setopt hist_ignore_dups
+setopt hist_find_no_dups
+
+# Completion styling
+zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
+zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
+zstyle ':completion:*' menu no
+zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls --color $realpath'
+zstyle ':fzf-tab:complete:__zoxide_z:*' fzf-preview 'ls --color $realpath'
+
+# Load Homebrew
+eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
+
+# Shell integrations
+source <(fzf --zsh)
+eval "$(zoxide init --cmd cd zsh)"
+eval "$(oh-my-posh init zsh --config $HOME/.config/ohmyposh/kyren.yml)"
+
+# Exports
+export EDITOR=nvim
+export FZF_DEFAULT_OPTS=" \
+ --color=bg+:#313244,bg:#1e1e2e,spinner:#f5e0dc,hl:#f38ba8 \
+ --color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc \
+ --color=marker:#f5e0dc,fg+:#cdd6f4,prompt:#cba6f7,hl+:#f38ba8"
+
+# Aliases
+alias ls='ls --color'
+alias c='clear'
+alias vim='nvim'
+