Files
dotfiles/.zshrc
2026-03-30 14:32:02 +03:00

101 lines
2.8 KiB
Bash

# NOTE profiling code
# typeset -gA __t_start __t_end
# setstartk() { __t_start[$1]=$EPOCHREALTIME; }
# setendk() { __t_end[$1]=$EPOCHREALTIME; }
# outputmsk() { # key [label...]
# local k=$1; shift
# float ms=$(( ( ${__t_end[$k]:-0} - ${__t_start[$k]:-0} ) * 1000.0 ))
# if [[ -n $* ]]; then
# printf "%s %.2fms\n" "$*" "$ms"
# else
# printf "%.2f\n" "$ms"
# fi
# }
#
# setstartk zshrc
# export PROFILING_MODE=1
# if [ $PROFILING_MODE -ne 0 ]; then
# zmodload zsh/zprof
# fi
export DOTFILES="$HOME/.dotfiles"
export CFG="$DOTFILES/.config"
export DOTBIN="$HOME/.config/bin"
export DOTBIN_META="$HOME/.config/.bin"
# Load sofmani-managed zsh plugins
source "$DOTFILES/_plugins/loader.zsh"
wd() { . ~/.local/share/zsh/plugins/wd/wd.sh }
source "$DOTFILES/exports.zsh"
if [[ -t 0 && -t 1 ]]; then
[[ "$1" == "-q" ]] || run-parts "$DOTFILES/_plugins/motd"
fi
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
export fpath=("$DOTFILES/completions" $fpath)
zstyle ':completion:*:*:*:*:*' menu select
# bindkey -e
# Use ESC to edit the current command line:
# check if edit-command-line not already loaded
which edit-command-line &>/dev/null
if [[ $? -ne 0 ]]; then
autoload -U edit-command-line
zle -N edit-command-line
fi
bindkey '^X' edit-command-line
bindkey -M viins '^X' edit-command-line
bindkey -M vicmd '^X' edit-command-line
# back/forward word
bindkey "^[[1;3C" forward-word
bindkey "^[[1;3D" backward-word
# Customize word characters for navigation (remove / and = to make them word delimiters)
if [[ -t 0 ]]; then
stty werase undef
fi
autoload -U select-word-style
select-word-style shell
export WORDCHARS='*?[]~&;!#$%^(){}<>'
# Allow comments on interactive command lines
setopt interactive_comments
# 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.
# export HIST_STAMPS="%d/%m/%Y %I:%M:%S"
# export HIST_FIND_NO_DUPS=true
# setopt histignoredups
# Preferred editor for local and remote sessions
# if [[ -n $SSH_CONNECTION ]]; then
# export EDITOR='nvim'
# else
# export EDITOR='nvim'
# fi
export VISUAL="$EDITOR"
# tmux source-file "$HOME/.config/tmux/conf.tmux" 2>/dev/null
source "$DOTFILES/aliases.zsh"
[[ ! -f "$HOME/.config/.p10k.zsh" ]] || source "$HOME/.config/.p10k.zsh"