From d4956b2f5029d6f5aa1e402d73f1d171a72674ee Mon Sep 17 00:00:00 2001 From: Kyren223 Date: Mon, 17 Jun 2024 18:17:49 +0300 Subject: [PATCH] Added .zshrc --- .zshrc | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 .zshrc 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' +