diff options
| author | 2025-02-26 12:23:16 +0300 | |
|---|---|---|
| committer | 2025-02-26 12:23:16 +0300 | |
| commit | 4bff3778850399b08b7bddb06db877e4604ffcf4 (patch) | |
| tree | e2df48a12aa06f266e375f81f67dc2c9c69a63d9 /zsh/zshrc | |
| parent | fix gitconfig (diff) | |
| download | dotfiles-4bff3778850399b08b7bddb06db877e4604ffcf4.tar.gz dotfiles-4bff3778850399b08b7bddb06db877e4604ffcf4.tar.bz2 dotfiles-4bff3778850399b08b7bddb06db877e4604ffcf4.tar.xz dotfiles-4bff3778850399b08b7bddb06db877e4604ffcf4.zip | |
Обновление gitconfig
Diffstat (limited to '')
| -rw-r--r-- | zsh/zshrc | 404 |
1 files changed, 203 insertions, 201 deletions
@@ -1,13 +1,13 @@ source ~/.config/zsh/antigen.zsh if command -v git >/dev/null && [ ! -d ~/.config/zsh/powerlevel10k ]; then - echo "info: installing p10k" - git clone --depth 1 --single-branch https://github.com/romkatv/powerlevel10k.git ~/.config/zsh/powerlevel10k + echo "info: installing p10k" + git clone --depth 1 --single-branch https://github.com/romkatv/powerlevel10k.git ~/.config/zsh/powerlevel10k fi source ~/.config/zsh/powerlevel10k/powerlevel10k.zsh-theme if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then - source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" + source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" fi source ~/.config/zsh/powerlevel10k/powerlevel10k.zsh-theme @@ -23,16 +23,18 @@ antigen apply # Exports -# export GOROOT=$HOME/work/go -export GOPATH=$HOME/go -export GOPROXY=https://proxy.neonxp.ru +#export GOPROXY=https://proxy.neonxp.ru export EDITOR="nvim" #export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/docker.sock -export PATH=$PATH:$GOPATH/bin +export PATH=$PATH:~/.local/bin:~/go/bin +export GOBIN=~/go/bin export GPG_TTY=$(tty) export LS_OPTIONS='--color=auto' eval "$(dircolors -b)" +fpath+="~/.config/zsh/comp" + + # Aliases alias ls='ls $LS_OPTIONS -F' alias l='ls $LS_OPTIONS -F' @@ -40,19 +42,19 @@ alias j="sudo journalctl" alias s='sudo' alias sctl="sudo systemctl" alias ll="ls -AFhl" -alias cp="cp -i" # Confirm before overwriting something +alias cp="cp -i" # Confirm before overwriting something alias gitpush="git add . && git commit --amend --no-edit && git push -f" alias k="kubectl" alias yu="ssh-add -e /usr/lib/x86_64-linux-gnu/libykcs11.so; ssh-add -s /usr/lib/x86_64-linux-gnu/libykcs11.so" alias m="micro" alias n="nvim" -alias cp="cp -i" # confirm before overwriting something -alias df="df -h" # human-readable sizes -alias free="free -m" # show sizes in MB +alias cp="cp -i" # confirm before overwriting something +alias df="df -h" # human-readable sizes +alias free="free -m" # show sizes in MB alias np="nano -w PKGBUILD" alias gitu='git add . && git commit && git push' alias g=git - +alias nsh='wl-paste | curl -d @- https://nixshare.ru/upload 2>/dev/null | wl-copy' [[ ! -f `which exa` ]] || alias ls="exa" && alias ll="exa -l" @@ -60,27 +62,27 @@ alias g=git function tk() { mkdir -p $1; cd $1; } function alert() { - notify-send --expire-time=30000 $1 $2 && nohup play ~/.local/share/alarm.wav & + notify-send --expire-time=30000 $1 $2 && nohup play ~/.local/share/alarm.wav & } ## Options section -setopt correct # Auto correct mistakes -setopt extendedglob # Extended globbing. Allows using regular expressions with * -setopt nocaseglob # Case insensitive globbing -setopt rcexpandparam # Array expension with parameters -setopt nocheckjobs # Don"t warn about running processes when exiting -setopt numericglobsort # Sort filenames numerically when it makes sense -setopt nobeep # No beep -setopt appendhistory # Immediately append history instead of overwriting -setopt histignorealldups # If a new command is a duplicate, remove the older one -setopt autocd # if only directory path is entered, cd there. -setopt inc_append_history # save commands are added to the history immediately, otherwise only when shell exits. -setopt histignorespace # Don"t save commands that start with space +setopt correct # Auto correct mistakes +setopt extendedglob # Extended globbing. Allows using regular expressions with * +setopt nocaseglob # Case insensitive globbing +setopt rcexpandparam # Array expension with parameters +setopt nocheckjobs # Don"t warn about running processes when exiting +setopt numericglobsort # Sort filenames numerically when it makes sense +setopt nobeep # No beep +setopt appendhistory # Immediately append history instead of overwriting +setopt histignorealldups # If a new command is a duplicate, remove the older one +setopt autocd # if only directory path is entered, cd there. +setopt inc_append_history # save commands are added to the history immediately, otherwise only when shell exits. +setopt histignorespace # Don"t save commands that start with space zstyle ':completion:*' matcher-list 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}' # Case insensitive tab completion -zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" # Colored completion (different colors for dirs/files/etc) -zstyle ':completion:*' rehash true # automatically find new executables in path -zstyle ':completion:*' menu select # Highlight menu selection +zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" # Colored completion (different colors for dirs/files/etc) +zstyle ':completion:*' rehash true # automatically find new executables in path +zstyle ':completion:*' menu select # Highlight menu selection # Speed up completions zstyle ':completion:*' accept-exact '*(N)' zstyle ':completion:*' use-cache on @@ -89,11 +91,11 @@ zstyle ':completion:*' cache-path ~/.zsh/cache zstyle ":completion:*:processes" command "ps -ax" zstyle ":completion:*:*:kill:*:processes" list-colors "=(#b) #([0-9]#)*=0=01;32" zstyle ":completion:*:*:kill:*" menu yes select -zstyle ":completion:*:kill:*" force-list always +zstyle ":completion:*:kill:*" force-list always zstyle ":completion:*:processes-names" command "ps -e -o comm=" zstyle ":completion:*:*:killall:*" menu yes select -zstyle ":completion:*:killall:*" force-list always +zstyle ":completion:*:killall:*" force-list always HISTFILE=~/.zsh_history HISTSIZE=100000 @@ -131,56 +133,56 @@ bindkey "^[[A" history-substring-search-up bindkey "^[[B" history-substring-search-down bindkey -e -bindkey "^[[7~" beginning-of-line # Home key -bindkey "^[[H" beginning-of-line # Home key +bindkey "^[[7~" beginning-of-line # Home key +bindkey "^[[H" beginning-of-line # Home key if [[ "${terminfo[khome]}" != "" ]]; then - bindkey "${terminfo[khome]}" beginning-of-line # [Home] - Go to beginning of line + bindkey "${terminfo[khome]}" beginning-of-line # [Home] - Go to beginning of line fi -bindkey "^[[8~" end-of-line # End key -bindkey "^[[F" end-of-line # End key +bindkey "^[[8~" end-of-line # End key +bindkey "^[[F" end-of-line # End key if [[ "${terminfo[kend]}" != "" ]]; then - bindkey "${terminfo[kend]}" end-of-line # [End] - Go to end of line + bindkey "${terminfo[kend]}" end-of-line # [End] - Go to end of line fi -bindkey "^[[2~" overwrite-mode # Insert key -bindkey "^[[3~" delete-char # Delete key -bindkey "^[[C" forward-char # Right key -bindkey "^[[D" backward-char # Left key -bindkey "^[[5~" history-beginning-search-backward # Page up key -bindkey "^[[6~" history-beginning-search-forward # Page down key +bindkey "^[[2~" overwrite-mode # Insert key +bindkey "^[[3~" delete-char # Delete key +bindkey "^[[C" forward-char # Right key +bindkey "^[[D" backward-char # Left key +bindkey "^[[5~" history-beginning-search-backward # Page up key +bindkey "^[[6~" history-beginning-search-forward # Page down key # Navigate words with ctrl+arrow keys -bindkey "^[Oc" forward-word # -bindkey "^[Od" backward-word # -bindkey "^[[1;5D" backward-word # -bindkey "^[[1;5C" forward-word # -bindkey "^H" backward-kill-word # delete previous word with ctrl+backspace -bindkey "^[[Z" undo # Shift+tab undo last action +bindkey "^[Oc" forward-word # +bindkey "^[Od" backward-word # +bindkey "^[[1;5D" backward-word # +bindkey "^[[1;5C" forward-word # +bindkey "^H" backward-kill-word # delete previous word with ctrl+backspace +bindkey "^[[Z" undo # Shift+tab undo last action # ctrl + space accept suggestion bindkey "^ " autosuggest-accept dotenv() { - if [ $# -eq 0 ]; then - [ -f .env.gpg ] && set -- .env.gpg "$@" - [ -f .env ] && set -- .env "$@" - fi - - set -a - while [ $# -gt 0 ]; do - echo "dotenv: Loading $1" - case "$1" in - *.gpg) - eval "$(gpg --quiet --decrypt --yes "$1")" - ;; - */*) - . "$1" - ;; - *) - . "./$1" - esac - shift - done - set +a + if [ $# -eq 0 ]; then + [ -f .env.gpg ] && set -- .env.gpg "$@" + [ -f .env ] && set -- .env "$@" + fi + + set -a + while [ $# -gt 0 ]; do + echo "dotenv: Loading $1" + case "$1" in + *.gpg) + eval "$(gpg --quiet --decrypt --yes "$1")" + ;; + */*) + . "$1" + ;; + *) + . "./$1" + esac + shift + done + set +a } # Set terminal window and tab/icon title @@ -191,33 +193,33 @@ dotenv() { # Fully supports screen and probably most modern xterm and rxvt # (In screen, only short_tab_title is used) function title { - emulate -L zsh - setopt prompt_subst - - [[ "$EMACS" == *term* ]] && return - - # if $2 is unset use $1 as default - # if it is set and empty, leave it as is - : ${2=$1} - - case "$TERM" in - xterm*|putty*|rxvt*|konsole*|ansi|mlterm*|alacritty|kitty|wezterm|st*) - print -Pn "\e]2;${2:q}\a" # set window name - print -Pn "\e]1;${1:q}\a" # set tab name - ;; - screen*|tmux*) - print -Pn "\ek${1:q}\e\\" # set screen hardstatus - ;; - *) - # Try to use terminfo to set the title - # If the feature is available set title - if [[ -n "$terminfo[fsl]" ]] && [[ -n "$terminfo[tsl]" ]]; then - echoti tsl - print -Pn "$1" - echoti fsl - fi - ;; - esac + emulate -L zsh + setopt prompt_subst + + [[ "$EMACS" == *term* ]] && return + + # if $2 is unset use $1 as default + # if it is set and empty, leave it as is + : ${2=$1} + + case "$TERM" in + xterm*|putty*|rxvt*|konsole*|ansi|mlterm*|alacritty|kitty|wezterm|st*) + print -Pn "\e]2;${2:q}\a" # set window name + print -Pn "\e]1;${1:q}\a" # set tab name + ;; + screen*|tmux*) + print -Pn "\ek${1:q}\e\\" # set screen hardstatus + ;; + *) + # Try to use terminfo to set the title + # If the feature is available set title + if [[ -n "$terminfo[fsl]" ]] && [[ -n "$terminfo[tsl]" ]]; then + echoti tsl + print -Pn "$1" + echoti fsl + fi + ;; + esac } ZSH_THEME_TERM_TAB_TITLE_IDLE="%15<..<%~%<<" #15 char left truncated PWD @@ -225,58 +227,58 @@ ZSH_THEME_TERM_TITLE_IDLE="%n@%m:%~" # Runs before showing the prompt function mzc_termsupport_precmd { - [[ "${DISABLE_AUTO_TITLE:-}" == true ]] && return - title $ZSH_THEME_TERM_TAB_TITLE_IDLE $ZSH_THEME_TERM_TITLE_IDLE + [[ "${DISABLE_AUTO_TITLE:-}" == true ]] && return + title $ZSH_THEME_TERM_TAB_TITLE_IDLE $ZSH_THEME_TERM_TITLE_IDLE } # Runs before executing the command function mzc_termsupport_preexec { - [[ "${DISABLE_AUTO_TITLE:-}" == true ]] && return - - emulate -L zsh - - # split command into array of arguments - local -a cmdargs - cmdargs=("${(z)2}") - # if running fg, extract the command from the job description - if [[ "${cmdargs[1]}" = fg ]]; then - # get the job id from the first argument passed to the fg command - local job_id jobspec="${cmdargs[2]#%}" - # logic based on jobs arguments: - # http://zsh.sourceforge.net/Doc/Release/Jobs-_0026-Signals.html#Jobs - # https://www.zsh.org/mla/users/2007/msg00704.html - case "$jobspec" in - <->) # %number argument: - # use the same <number> passed as an argument - job_id=${jobspec} ;; - ""|%|+) # empty, %% or %+ argument: - # use the current job, which appears with a + in $jobstates: - # suspended:+:5071=suspended (tty output) - job_id=${(k)jobstates[(r)*:+:*]} ;; - -) # %- argument: - # use the previous job, which appears with a - in $jobstates: - # suspended:-:6493=suspended (signal) - job_id=${(k)jobstates[(r)*:-:*]} ;; - [?]*) # %?string argument: - # use $jobtexts to match for a job whose command *contains* <string> - job_id=${(k)jobtexts[(r)*${(Q)jobspec}*]} ;; - *) # %string argument: - # use $jobtexts to match for a job whose command *starts with* <string> - job_id=${(k)jobtexts[(r)${(Q)jobspec}*]} ;; - esac - - # override preexec function arguments with job command - if [[ -n "${jobtexts[$job_id]}" ]]; then - 1="${jobtexts[$job_id]}" - 2="${jobtexts[$job_id]}" - fi - fi - - # cmd name only, or if this is sudo or ssh, the next cmd - local CMD=${1[(wr)^(*=*|sudo|ssh|mosh|rake|-*)]:gs/%/%%} - local LINE="${2:gs/%/%%}" - - title '$CMD' '%100>...>$LINE%<<' + [[ "${DISABLE_AUTO_TITLE:-}" == true ]] && return + + emulate -L zsh + + # split command into array of arguments + local -a cmdargs + cmdargs=("${(z)2}") + # if running fg, extract the command from the job description + if [[ "${cmdargs[1]}" = fg ]]; then + # get the job id from the first argument passed to the fg command + local job_id jobspec="${cmdargs[2]#%}" + # logic based on jobs arguments: + # http://zsh.sourceforge.net/Doc/Release/Jobs-_0026-Signals.html#Jobs + # https://www.zsh.org/mla/users/2007/msg00704.html + case "$jobspec" in + <->) # %number argument: + # use the same <number> passed as an argument + job_id=${jobspec} ;; + ""|%|+) # empty, %% or %+ argument: + # use the current job, which appears with a + in $jobstates: + # suspended:+:5071=suspended (tty output) + job_id=${(k)jobstates[(r)*:+:*]} ;; + -) # %- argument: + # use the previous job, which appears with a - in $jobstates: + # suspended:-:6493=suspended (signal) + job_id=${(k)jobstates[(r)*:-:*]} ;; + [?]*) # %?string argument: + # use $jobtexts to match for a job whose command *contains* <string> + job_id=${(k)jobtexts[(r)*${(Q)jobspec}*]} ;; + *) # %string argument: + # use $jobtexts to match for a job whose command *starts with* <string> + job_id=${(k)jobtexts[(r)${(Q)jobspec}*]} ;; + esac + + # override preexec function arguments with job command + if [[ -n "${jobtexts[$job_id]}" ]]; then + 1="${jobtexts[$job_id]}" + 2="${jobtexts[$job_id]}" + fi + fi + + # cmd name only, or if this is sudo or ssh, the next cmd + local CMD=${1[(wr)^(*=*|sudo|ssh|mosh|rake|-*)]:gs/%/%%} + local LINE="${2:gs/%/%%}" + + title '$CMD' '%100>...>$LINE%<<' } # URL-encode a string @@ -296,60 +298,60 @@ function mzc_termsupport_preexec { # Returns nonzero if encoding failed. # # Usage: -# zsh_urlencode [-r] [-m] [-P] <string> [<string> ...] +# zsh_urlencode [-r] [-m] [-P] <string> [<string> ...] # -# -r causes reserved characters (;/?:@&=+$,) to be escaped +# -r causes reserved characters (;/?:@&=+$,) to be escaped # -# -m causes "mark" characters (_.!~*''()-) to be escaped +# -m causes "mark" characters (_.!~*''()-) to be escaped # -# -P causes spaces to be encoded as '%20' instead of '+' +# -P causes spaces to be encoded as '%20' instead of '+' function zsh_urlencode() { - emulate -L zsh - local -a opts - zparseopts -D -E -a opts r m P - - local in_str="$@" - local url_str="" - local spaces_as_plus - if [[ -z $opts[(r)-P] ]]; then spaces_as_plus=1; fi - local str="$in_str" - - # URLs must use UTF-8 encoding; convert str to UTF-8 if required - local encoding=$langinfo[CODESET] - - - # Use LC_CTYPE=C to process text byte-by-byte - local i byte ord LC_ALL=C - export LC_ALL - local reserved=';/?:@&=+$,' - local mark='_.!~*''()-' - local dont_escape="[A-Za-z0-9" - if [[ -z $opts[(r)-r] ]]; then - dont_escape+=$reserved - fi - # $mark must be last because of the "-" - if [[ -z $opts[(r)-m] ]]; then - dont_escape+=$mark - fi - dont_escape+="]" - - # Implemented to use a single printf call and avoid subshells in the loop, - # for performance - local url_str="" - for (( i = 1; i <= ${#str}; ++i )); do - byte="$str[i]" - if [[ "$byte" =~ "$dont_escape" ]]; then - url_str+="$byte" - else - if [[ "$byte" == " " && -n $spaces_as_plus ]]; then - url_str+="+" - else - ord=$(( [##16] #byte )) - url_str+="%$ord" - fi - fi - done - echo -E "$url_str" + emulate -L zsh + local -a opts + zparseopts -D -E -a opts r m P + + local in_str="$@" + local url_str="" + local spaces_as_plus + if [[ -z $opts[(r)-P] ]]; then spaces_as_plus=1; fi + local str="$in_str" + + # URLs must use UTF-8 encoding; convert str to UTF-8 if required + local encoding=$langinfo[CODESET] + + + # Use LC_CTYPE=C to process text byte-by-byte + local i byte ord LC_ALL=C + export LC_ALL + local reserved=';/?:@&=+$,' + local mark='_.!~*''()-' + local dont_escape="[A-Za-z0-9" + if [[ -z $opts[(r)-r] ]]; then + dont_escape+=$reserved + fi + # $mark must be last because of the "-" + if [[ -z $opts[(r)-m] ]]; then + dont_escape+=$mark + fi + dont_escape+="]" + + # Implemented to use a single printf call and avoid subshells in the loop, + # for performance + local url_str="" + for (( i = 1; i <= ${#str}; ++i )); do + byte="$str[i]" + if [[ "$byte" =~ "$dont_escape" ]]; then + url_str+="$byte" + else + if [[ "$byte" == " " && -n $spaces_as_plus ]]; then + url_str+="+" + else + ord=$(( [##16] #byte )) + url_str+="%$ord" + fi + fi + done + echo -E "$url_str" } # Emits the control sequence to notify many terminal emulators @@ -358,17 +360,17 @@ function zsh_urlencode() { # Identifies the directory using a file: URI scheme, including # the host name to disambiguate local vs. remote paths. function mzc_termsupport_cwd { - # Percent-encode the host and path names. - local URL_HOST URL_PATH - URL_HOST="$(zsh_urlencode -P $HOST)" || return 1 - URL_PATH="$(zsh_urlencode -P $PWD)" || return 1 + # Percent-encode the host and path names. + local URL_HOST URL_PATH + URL_HOST="$(zsh_urlencode -P $HOST)" || return 1 + URL_PATH="$(zsh_urlencode -P $PWD)" || return 1 - # common control sequence (OSC 7) to set current host and path - printf "\e]7;%s\a" "file://${URL_HOST}${URL_PATH}" + # common control sequence (OSC 7) to set current host and path + printf "\e]7;%s\a" "file://${URL_HOST}${URL_PATH}" } if [ -f env.sh ]; then - source ./env.sh + source ./env.sh fi [[ ! -f ~/.zshrc.local ]] || source ~/.zshrc.local |
