mirror of
https://github.com/gaschz/dotfiles.git
synced 2025-03-01 14:22:33 +01:00
fix: remove duplicate files
They were symlink before, on a wrong copy, it was converter to regular files.
This commit is contained in:
parent
835c5a9097
commit
3a7398fdb4
@ -1,5 +0,0 @@
|
|||||||
# SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
||||||
|
|
||||||
show-error
|
|
@ -201,9 +201,8 @@ zmodload zsh/complist
|
|||||||
mkdir -p $XDG_CACHE_HOME/zsh
|
mkdir -p $XDG_CACHE_HOME/zsh
|
||||||
compinit -u -d $XDG_CACHE_HOME/zsh/zcompdump
|
compinit -u -d $XDG_CACHE_HOME/zsh/zcompdump
|
||||||
# _comp_options+=(globdots)
|
# _comp_options+=(globdots)
|
||||||
if has zoxide; then
|
! has zoxide || eval "$(zoxide init zsh)"
|
||||||
eval "$(zoxide init zsh)"
|
! has gitlint || eval "$(_GITLINT_COMPLETE=zsh_source gitlint)"
|
||||||
fi
|
|
||||||
## }}}
|
## }}}
|
||||||
## {{{ Plugins
|
## {{{ Plugins
|
||||||
source_readable /usr/share/doc/fzf/examples/key-bindings.zsh
|
source_readable /usr/share/doc/fzf/examples/key-bindings.zsh
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
#!/usr/bin/env zsh
|
|
||||||
|
|
||||||
## SPDX-FileCopyrightText: 2004 - 2022 Tim Pope <https://tpo.pe>
|
|
||||||
## SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
|
||||||
##
|
|
||||||
## SPDX-License-Identifier: AGPL-3.0-or-later
|
|
||||||
|
|
||||||
test "0${SHLVL-}" -le 1 && test -z "${SSH_TTY-}" &&
|
|
||||||
test "${TERM-}" = linux && clear
|
|
@ -1,12 +0,0 @@
|
|||||||
#!/usr/bin/env zsh
|
|
||||||
|
|
||||||
## SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
|
||||||
##
|
|
||||||
## SPDX-License-Identifier: AGPL-3.0-or-later
|
|
||||||
|
|
||||||
## Zsh does not source /etc/profile as it is not a Bourne based Shell, but
|
|
||||||
## some distributions such as Qubes, Whonix, Debian, Gentoo ship files to
|
|
||||||
## /etc/profile.d.
|
|
||||||
|
|
||||||
emulate sh -c "source /etc/profile"
|
|
||||||
. "$HOME/.profile"
|
|
@ -1,12 +0,0 @@
|
|||||||
#!/usr/bin/env zsh
|
|
||||||
|
|
||||||
## SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
|
||||||
##
|
|
||||||
## SPDX-License-Identifier: AGPL-3.0-or-later
|
|
||||||
|
|
||||||
if test -z "$ENV" && test -n "$PATH"; then
|
|
||||||
case $- in
|
|
||||||
*l*) ;;
|
|
||||||
*) . "$HOME/.zprofile" >/dev/null ;;
|
|
||||||
esac
|
|
||||||
fi
|
|
@ -1,486 +0,0 @@
|
|||||||
#!/usr/bin/env zsh
|
|
||||||
|
|
||||||
## SPDX-FileCopyrightText: 2004 - 2022 Tim Pope <https://tpo.pe>
|
|
||||||
## SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
|
||||||
##
|
|
||||||
## SPDX-License-Identifier: AGPL-3.0-or-later
|
|
||||||
|
|
||||||
## Credits: https://github.com/tpope/dotfiles/blob/master/.zshrc
|
|
||||||
|
|
||||||
## {{{ Requirements
|
|
||||||
## If not running interactively, return.
|
|
||||||
case $- in
|
|
||||||
*i*) ;;
|
|
||||||
*) return;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
## Source default files.
|
|
||||||
# shellcheck disable=SC1090
|
|
||||||
source "$HOME/.zprofile"
|
|
||||||
source "$ENV"
|
|
||||||
## }}}
|
|
||||||
## {{{ Options
|
|
||||||
## - Quiet
|
|
||||||
setopt no_beep
|
|
||||||
## - Words
|
|
||||||
setopt interactive_comments
|
|
||||||
## - History
|
|
||||||
SAVEHIST="$HISTSIZE"
|
|
||||||
setopt hist_expire_dups_first # purge dups first
|
|
||||||
setopt hist_ignore_dups # ignore dups in history list
|
|
||||||
setopt hist_verify # if command has hist expansion, show it before executing
|
|
||||||
## - Expansion
|
|
||||||
setopt auto_cd
|
|
||||||
setopt no_nomatch # if a pattern has no matches print an error
|
|
||||||
setopt numeric_glob_sort # sort file names numerically when relevant
|
|
||||||
setopt magic_equal_subst # filename expansion for opt=arg
|
|
||||||
setopt no_equals # don't interpret =string as a command
|
|
||||||
## - Prompt
|
|
||||||
setopt prompt_subst
|
|
||||||
setopt transient_rprompt
|
|
||||||
setopt print_exit_value
|
|
||||||
|
|
||||||
if test "${color_prompt-}" = "yes"; then
|
|
||||||
set zle_bracketed_paste
|
|
||||||
autoload -Uz bracketed-paste-magic
|
|
||||||
zle -N bracketed-paste bracketed-paste-magic
|
|
||||||
autoload -Uz url-quote-magic
|
|
||||||
zle -N self-insert url-quote-magic
|
|
||||||
|
|
||||||
pasteinit() {
|
|
||||||
OLD_SELF_INSERT=${${(s.:.)widgets[self-insert]}[2,3]}
|
|
||||||
zle -N self-insert url-quote-magic
|
|
||||||
}
|
|
||||||
pastefinish() {
|
|
||||||
zle -N self-insert $OLD_SELF_INSERT
|
|
||||||
}
|
|
||||||
zstyle :bracketed-paste-magic paste-init pasteinit
|
|
||||||
zstyle :bracketed-paste-magic paste-finish pastefinish
|
|
||||||
else
|
|
||||||
unset zle_bracketed_paste
|
|
||||||
fi
|
|
||||||
|
|
||||||
## }}}
|
|
||||||
## {{{ Alias
|
|
||||||
alias reload="exec zsh"
|
|
||||||
## }}}
|
|
||||||
## {{{ Prompt
|
|
||||||
|
|
||||||
newline=$'\n'
|
|
||||||
if test "${color_prompt-}" = "yes"; then
|
|
||||||
autoload -U colors && colors
|
|
||||||
[[ "${COLORTERM-}" == (24bit|truecolor) || "${terminfo[colors]}" -eq '16777216' ]] || zmodload zsh/nearcolor
|
|
||||||
|
|
||||||
PS1="%F{magenta}[%{$usercolor%}%n@%M%F{reset_color%} %{$dircolor%}%50<...<%~%<<%F{reset_color%}\$(_git_prompt_info)%F{magenta}]%F{reset_color}${newline-}${ps1_symbol} "
|
|
||||||
RPS1="%(?..(%{"$'\e[31m'"%}%?%{$reset_color%}%)%<<)"
|
|
||||||
else
|
|
||||||
PS1="[%n@%M %~\$(_git_prompt_info)]${newline}${ps1_symbol} "
|
|
||||||
RPS1="%(?..(%?%)%<<)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
## Set window title
|
|
||||||
_set_title() {
|
|
||||||
case "${1:-}" in
|
|
||||||
*install*)
|
|
||||||
hash -r ;;
|
|
||||||
esac
|
|
||||||
print -Pn '\e]1;%l@%m${1+*}\a'
|
|
||||||
print -Pn '\e]2;%n@%m:%~'
|
|
||||||
if test -n "${1:-}"; then
|
|
||||||
print -Pnr ' (%24>..>$1%>>)' | tr '\0-\037' '?'
|
|
||||||
fi
|
|
||||||
print -Pn " [%l]\a"
|
|
||||||
}
|
|
||||||
|
|
||||||
case "${TERM-}" in
|
|
||||||
screen*)
|
|
||||||
precmd() {
|
|
||||||
_set_title "$@"
|
|
||||||
if [ "${STY:-}" -o "${TMUX:-}" ]; then
|
|
||||||
# print -Pn "\e]1;\a\e]1;@%m\a"
|
|
||||||
print -Pn '\ek@\e\\'
|
|
||||||
else
|
|
||||||
print -Pn '\ek@%m\e\\'
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
preexec() {
|
|
||||||
_set_title "$@"
|
|
||||||
print -n "\ek"
|
|
||||||
print -Pnr '%10>..>$1' | tr '\0-\037' '?'
|
|
||||||
if [ "${STY:-}" -o "${TMUX:-}" ]; then
|
|
||||||
print -Pn '@\e\\'
|
|
||||||
else
|
|
||||||
print -Pn '@%m\e\\'
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
;;
|
|
||||||
|
|
||||||
xterm*|rxvt*|Eterm*|kterm*|putty*|dtterm*|ansi*|cygwin*)
|
|
||||||
precmd () { _set_title "$@" }
|
|
||||||
preexec() { _set_title "$@" }
|
|
||||||
;;
|
|
||||||
|
|
||||||
""|dumb|linux*|vt220*|vt100*) ;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
PS1="%n@%m:%~%# "
|
|
||||||
RPS1="%(?..(%?%)%<<)"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
unset hostcolor hostletter hostcode dircolor usercolor usercode reset_color
|
|
||||||
unset newline
|
|
||||||
## }}}
|
|
||||||
## {{{ Completions
|
|
||||||
|
|
||||||
## Enable completion.
|
|
||||||
zstyle ':completion:*' use-cache on
|
|
||||||
zstyle ':completion:*' cache-path "${XDG_CACHE_HOME:-$HOME/.cache}"/zsh/zcompcache
|
|
||||||
zstyle ':completion:*' auto-description 'Specify: %d'
|
|
||||||
zstyle ':completion:*' completer _expand _complete _ignored _approximate
|
|
||||||
zstyle ':completion:*' expand prefix suffix
|
|
||||||
zstyle ':completion:*' file-sort name
|
|
||||||
zstyle ':completion:*' group-name ''
|
|
||||||
zstyle ':completion:*' ignore-parents parent pwd ..
|
|
||||||
zstyle ':completion:*' insert-unambiguous true
|
|
||||||
zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s
|
|
||||||
zstyle ':completion:*' list-suffixes true
|
|
||||||
zstyle ':completion:*' matcher-list '' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}' 'r:|[._-]=** r:|=**' 'l:|=* r:|=*'
|
|
||||||
zstyle ':completion:*' menu select=1
|
|
||||||
zstyle ':completion:*' original true
|
|
||||||
zstyle ':completion:*' preserve-prefix '//[^/]##/'
|
|
||||||
zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s
|
|
||||||
zstyle ':completion:*' special-dirs true
|
|
||||||
zstyle ':completion:*' squeeze-slashes true
|
|
||||||
zstyle ':completion:*' use-compctl true
|
|
||||||
zstyle ':completion:*' verbose true
|
|
||||||
zstyle ':completion:*:*:-command-:*:*' file-patterns \
|
|
||||||
'*(#q-*):executables:Executables *(-/):directories:Directories'
|
|
||||||
zstyle -e ':completion:*:*:-command-:*:*' tag-order '
|
|
||||||
reply=("
|
|
||||||
executables:Executables:Executables
|
|
||||||
builtins:Builtins:Builtins
|
|
||||||
commands:Commands:Commands
|
|
||||||
aliases:Aliases:Aliases
|
|
||||||
functions:Functions:Functions
|
|
||||||
parameters:Variables:Variables
|
|
||||||
reserved-words:Keywords:Keywords
|
|
||||||
directories:Directories
|
|
||||||
" -
|
|
||||||
)'
|
|
||||||
|
|
||||||
## Completion per utility.
|
|
||||||
zstyle ':completion:*:sudo::' environ \
|
|
||||||
HOME="/root" \
|
|
||||||
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
|
||||||
zstyle ':completion:*:doas::' environ \
|
|
||||||
HOME="/root" \
|
|
||||||
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
|
||||||
|
|
||||||
## Colored completions.
|
|
||||||
# zstyle ':completion:*' format 'Completing %d'
|
|
||||||
if test "${color_prompt-}" = "yes"; then
|
|
||||||
zstyle ':completion:*:*:*:*:descriptions' format '%B%F{blue}-- %d --%b%f'
|
|
||||||
zstyle ':completion:*:messages' format ' %B%F{purple} -- %d --%f%b'
|
|
||||||
zstyle ':completion:*:warnings' format ' %B%F{red}-- no matches found --%f%b'
|
|
||||||
|
|
||||||
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
|
|
||||||
zstyle ':completion:*:*:kill:*' list-colors '=(#b) #([0-9]#)*( *[a-z])*=94=91=93'
|
|
||||||
else
|
|
||||||
zstyle ':completion:*:*:*:*:descriptions' format '-- %d --%b%f'
|
|
||||||
zstyle ':completion:*:messages' format ' -- %d --%f%b'
|
|
||||||
zstyle ':completion:*:warnings' format ' -- no matches found --%f%b'
|
|
||||||
|
|
||||||
zstyle ':completion:*:default' list-colors ''
|
|
||||||
zstyle ':completion:*:*:kill:*' list-colors ''
|
|
||||||
fi
|
|
||||||
|
|
||||||
## Load completions.
|
|
||||||
autoload -Uz compinit
|
|
||||||
zmodload zsh/complist
|
|
||||||
mkdir -p $XDG_CACHE_HOME/zsh
|
|
||||||
compinit -u -d $XDG_CACHE_HOME/zsh/zcompdump
|
|
||||||
# _comp_options+=(globdots)
|
|
||||||
! has zoxide || eval "$(zoxide init zsh)"
|
|
||||||
! has gitlint || eval "$(_GITLINT_COMPLETE=zsh_source gitlint)"
|
|
||||||
## }}}
|
|
||||||
## {{{ Plugins
|
|
||||||
source_readable /usr/share/doc/fzf/examples/key-bindings.zsh
|
|
||||||
source_readable /usr/share/doc/fzf/examples/completion.zsh
|
|
||||||
|
|
||||||
if test "${color_prompt-}" = "yes"; then
|
|
||||||
## Enable auto-suggestions based on the history
|
|
||||||
if test -f /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh; then
|
|
||||||
ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=30
|
|
||||||
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=7,bg=8,underline"
|
|
||||||
typeset -a ZSH_AUTOSUGGEST_CLEAR_WIDGETS
|
|
||||||
ZSH_AUTOSUGGEST_CLEAR_WIDGETS+=(bracketed-paste)
|
|
||||||
source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh
|
|
||||||
fi
|
|
||||||
## Highlight commands as you type
|
|
||||||
if test -f /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh; then
|
|
||||||
## https://github.com/zsh-users/zsh-syntax-highlighting/blob/master/docs/highlighters
|
|
||||||
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern regexp)
|
|
||||||
typeset -A ZSH_HIGHLIGHT_STYLES
|
|
||||||
ZSH_HIGHLIGHT_STYLES[unknown-token]='fg=red'
|
|
||||||
ZSH_HIGHLIGHT_STYLES[default]='fg=white'
|
|
||||||
ZSH_HIGHLIGHT_STYLES[alias]='fg=cyan'
|
|
||||||
ZSH_HIGHLIGHT_STYLES[function]='fg=cyan'
|
|
||||||
ZSH_HIGHLIGHT_STYLES[builtin]='fg=green'
|
|
||||||
ZSH_HIGHLIGHT_STYLES[command]='fg=green'
|
|
||||||
ZSH_HIGHLIGHT_STYLES[precommand]='fg=green'
|
|
||||||
ZSH_HIGHLIGHT_STYLES[comment]='fg=black,bold'
|
|
||||||
ZSH_HIGHLIGHT_STYLES[globbing]='fg=cyan'
|
|
||||||
typeset -A ZSH_HIGHLIGHT_REGEXP
|
|
||||||
ZSH_HIGHLIGHT_REGEXP+=('^sudo' 'fg=magenta')
|
|
||||||
ZSH_HIGHLIGHT_REGEXP+=('^doas' 'fg=magenta')
|
|
||||||
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
## }}}
|
|
||||||
## {{{ Bindkeys
|
|
||||||
|
|
||||||
## Widgets
|
|
||||||
##
|
|
||||||
function bindkey-multi () {
|
|
||||||
## Usage: bindkey-multi mode Nmode -- bind nbind terminfoname -- widgetname
|
|
||||||
local i j widget nomap
|
|
||||||
local -a maps sequences
|
|
||||||
|
|
||||||
test "$1" = "--" && nomap=1
|
|
||||||
|
|
||||||
while [[ "$1" != "--" ]]; do
|
|
||||||
maps+=( "$1" )
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
shift
|
|
||||||
|
|
||||||
while [[ "$1" != "--" ]]; do
|
|
||||||
sequences+=( "$1" )
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
shift
|
|
||||||
|
|
||||||
widget="$1"
|
|
||||||
test -z "$widget" && return 1
|
|
||||||
|
|
||||||
if test -n "$nomap"; then
|
|
||||||
for j in "${sequences[@]}"; do
|
|
||||||
test "$j" || continue
|
|
||||||
bindkey -- "$j" "$widget"
|
|
||||||
done
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
for i in "${maps[@]}"; do
|
|
||||||
test "$i" || continue
|
|
||||||
for j in "${sequences[@]}"; do
|
|
||||||
test "$j" || continue
|
|
||||||
bindkey -M "$i" -- "$j" "$widget"
|
|
||||||
done
|
|
||||||
done
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
function clear-screen-and-scrollback() {
|
|
||||||
case "${TERM-}" in
|
|
||||||
""|dumb|linux*|vt100*|vt220*) return;;
|
|
||||||
esac
|
|
||||||
test -n "${TTY-}" || return
|
|
||||||
echoti civis >"${TTY-}"
|
|
||||||
printf '%b' "\e[H\e[2J" >"${TTY-}"
|
|
||||||
zle .reset-prompt
|
|
||||||
zle -R
|
|
||||||
printf '%b' "\e[3J" >"${TTY-}"
|
|
||||||
echoti cnorm >"${TTY-}"
|
|
||||||
}
|
|
||||||
zle -N clear-screen-and-scrollback
|
|
||||||
|
|
||||||
fg-widget() {
|
|
||||||
if [[ $#BUFFER -eq 0 ]]; then
|
|
||||||
if jobs %- >/dev/null 2>&1; then
|
|
||||||
BUFFER='fg %-'
|
|
||||||
else
|
|
||||||
BUFFER='fg'
|
|
||||||
fi
|
|
||||||
zle accept-line
|
|
||||||
else
|
|
||||||
zle push-input
|
|
||||||
zle clear-screen
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
zle -N fg-widget
|
|
||||||
|
|
||||||
change-first-word(){
|
|
||||||
zle beginning-of-line -N
|
|
||||||
zle kill-word
|
|
||||||
}
|
|
||||||
zle -N change-first-word
|
|
||||||
|
|
||||||
new-screen() {
|
|
||||||
test -z "${STY-}" || screen < "${TTY-}"
|
|
||||||
test -z "${TMUX-}" || tmux new-window
|
|
||||||
}
|
|
||||||
zle -N new-screen
|
|
||||||
|
|
||||||
case "${TERM-}" in
|
|
||||||
""|dumb|linux*|vt100*|vt220*) ;;
|
|
||||||
*)
|
|
||||||
zle-keymap-select zle-line-init() {
|
|
||||||
case $KEYMAP in
|
|
||||||
vicmd) print -n -- "\e[2 q";;
|
|
||||||
viins|main) print -n -- "\e[5 q";;
|
|
||||||
esac
|
|
||||||
|
|
||||||
zle reset-prompt
|
|
||||||
zle -R
|
|
||||||
}
|
|
||||||
|
|
||||||
zle-line-finish() {
|
|
||||||
print -n -- "\e[2 q"
|
|
||||||
}
|
|
||||||
|
|
||||||
zle -N zle-line-init
|
|
||||||
zle -N zle-line-finish
|
|
||||||
zle -N zle-keymap-select
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
set-keymap-vi(){
|
|
||||||
export KEYTIMEOUT=1
|
|
||||||
bindkey -v
|
|
||||||
}
|
|
||||||
|
|
||||||
set-keymap-emacs(){
|
|
||||||
bindkey -e
|
|
||||||
bindkey -r "^Q"
|
|
||||||
}
|
|
||||||
|
|
||||||
## Keymap mode
|
|
||||||
set-keymap-emacs
|
|
||||||
|
|
||||||
autoload -Uz select-word-style
|
|
||||||
select-word-style bash
|
|
||||||
|
|
||||||
## Viins
|
|
||||||
bindkey -M viins "^A" beginning-of-line
|
|
||||||
bindkey -M viins "^B" backward-char
|
|
||||||
bindkey -M viins "^D" delete-char-or-list
|
|
||||||
bindkey -M viins "^E" end-of-line
|
|
||||||
bindkey -M viins "^F" forward-char
|
|
||||||
bindkey-multi emacs viins vicmd -- "^G" -- which-command
|
|
||||||
bindkey -M viins "^J" accept-search
|
|
||||||
bindkey -M viins "^K" kill-line
|
|
||||||
bindkey -M viins "^L" clear-screen-and-scrollback
|
|
||||||
bindkey -M viins "^M" accept-line
|
|
||||||
bindkey -M viins "^N" down-line-or-history
|
|
||||||
bindkey -M viins "^P" up-line-or-history
|
|
||||||
bindkey -M viins "^R" history-incremental-search-backward
|
|
||||||
bindkey -M viins "^S" history-incremental-search-forward
|
|
||||||
bindkey -M viins "^T" transpose-chars
|
|
||||||
bindkey-multi emacs viins -- "^W" -- vi-backward-kill-word
|
|
||||||
bindkey -M viins "^U" backward-kill-line
|
|
||||||
bindkey -M emacs "^U" backward-kill-line
|
|
||||||
bindkey -M viins "^Y" yank
|
|
||||||
bindkey-multi emacs viins vicmd -- "^Z" -- fg-widget
|
|
||||||
bindkey -M viins "^_" undo
|
|
||||||
bindkey -M viins "^@" redo
|
|
||||||
bindkey -M viins " " magic-space
|
|
||||||
bindkey -M emacs " " magic-space
|
|
||||||
bindkey -M emacs "^X^[" vi-cmd-mode
|
|
||||||
## Viins alt
|
|
||||||
bindkey -M viins "^[u" undo
|
|
||||||
bindkey -M viins "^[r" redo
|
|
||||||
bindkey -M viins "^[m" copy-prev-shell-word
|
|
||||||
|
|
||||||
## Misc
|
|
||||||
bindkey -M isearch "^J" accept-search 2>/dev/null
|
|
||||||
bindkey -M menuselect "h" vi-backward-char
|
|
||||||
bindkey -M menuselect "k" vi-up-line-or-history
|
|
||||||
bindkey -M menuselect "l" vi-forward-char
|
|
||||||
bindkey -M menuselect "j" vi-down-line-or-history
|
|
||||||
bindkey -M menuselect "^C" send-break
|
|
||||||
bindkey -M menuselect "^J" accept-and-infer-next-history # accept-search
|
|
||||||
bindkey -M menuselect "^M" accept-line
|
|
||||||
|
|
||||||
## Keys for multiple modes and multiple bindings.
|
|
||||||
## https://invisible-island.net/xterm/xterm-function-keys.html
|
|
||||||
##
|
|
||||||
## Shit+Tab
|
|
||||||
bindkey-multi emacs viins menuselect -- "\E[Z" "${terminfo[kcbt]}" \
|
|
||||||
-- reverse-menu-complete
|
|
||||||
## Backspace
|
|
||||||
bindkey-multi emacs viins vicmd menuselect -- "^H" "^?" "${terminfo[kbs]}" \
|
|
||||||
-- backward-delete-char
|
|
||||||
## Home
|
|
||||||
bindkey-multi emacs viins vicmd -- "\E[1~" "\E[7~" "\E[H" "\EOH" \
|
|
||||||
"${terminfo[khome]}" \
|
|
||||||
-- beginning-of-line
|
|
||||||
## Insert
|
|
||||||
bindkey-multi emacs viins vicmd -- "\E[2~" "\E[L" "${terminfo[kich1]}" \
|
|
||||||
-- overwrite-mode
|
|
||||||
## Delete
|
|
||||||
bindkey-multi emacs viins vicmd -- "\E[3~" "\E[P" "\EOP" "${terminfo[kdch1]}" \
|
|
||||||
-- vi-delete-char
|
|
||||||
## End
|
|
||||||
bindkey-multi emacs viins vicmd -- "\E[4~" "\E[8~" "\E[F" "\EOF" \
|
|
||||||
"${terminfo[kend]}" \
|
|
||||||
-- end-of-line
|
|
||||||
## PgUp
|
|
||||||
bindkey-multi emacs viins -- "\E[5~" "\E[I" "${terminfo[kpp]}" \
|
|
||||||
-- beginning-of-buffer-or-history
|
|
||||||
## PgDown
|
|
||||||
bindkey-multi emacs viins -- "\E[6~" "\E[G" "${terminfo[knp]}" \
|
|
||||||
-- end-of-buffer-or-history
|
|
||||||
## Up arrow
|
|
||||||
bindkey-multi emacs viins vicmd -- "\E[A" "\EOA" "${terminfo[kcuu1]}" \
|
|
||||||
-- up-line-or-history
|
|
||||||
## Down arrow
|
|
||||||
bindkey-multi emacs viins vicmd -- "\E[B" "\EOB" "${terminfo[kcud1]}" \
|
|
||||||
-- down-line-or-history
|
|
||||||
## Right arrow
|
|
||||||
bindkey-multi emacs viins vicmd -- "\E[1C" "\E[C" "\EOC" "${terminfo[kcuf1]}" \
|
|
||||||
-- forward-char
|
|
||||||
## Left arrow
|
|
||||||
bindkey-multi emacs viins vicmd -- "\E[D" "\EOD" "${terminfo[kcub1]}" \
|
|
||||||
-- backward-char
|
|
||||||
## Ctrl-Delete
|
|
||||||
bindkey-multi emacs viins vicmd -- "\E[3;5~" "\E[3\^" "${terminfo[kDC5]}" \
|
|
||||||
-- kill-word
|
|
||||||
## Ctrl-RightArrow
|
|
||||||
bindkey-multi emacs viins vicmd -- "\E[1;5C" "\E0c" "${terminfo[kRIT5]}" \
|
|
||||||
-- forward-word
|
|
||||||
## Ctrl-LeftArrow
|
|
||||||
bindkey-multi emacs viins vicmd -- "\E[1;5D" "\E0d" "${terminfo[kLFT5]}" \
|
|
||||||
-- backward-word
|
|
||||||
## F11
|
|
||||||
bindkey-multi emacs viins -- "\E[23~" "${terminfo[kf11]}" -- new-screen
|
|
||||||
|
|
||||||
autoload -Uz edit-command-line
|
|
||||||
zle -N edit-command-line
|
|
||||||
bindkey -M emacs "^[e" edit-command-line
|
|
||||||
bindkey -M emacs "^X^E" edit-command-line
|
|
||||||
bindkey -M vicmd "^E" edit-command-line
|
|
||||||
|
|
||||||
bindkey -M emacs "\ea" change-first-word
|
|
||||||
bindkey -M emacs "^XD" describe-key-briefly
|
|
||||||
|
|
||||||
for binding in ${(f)$(bindkey -M emacs|grep '^"\^X')}; do
|
|
||||||
bindkey -M viins "${(@Qz)binding}"
|
|
||||||
done
|
|
||||||
unset binding
|
|
||||||
|
|
||||||
## Make sure the terminal is in application mode, when zle is active.
|
|
||||||
## Only then are the values from $terminfo valid.
|
|
||||||
if (( ${+terminfo[smkx]} && ${+terminfo[rmkx]} )); then
|
|
||||||
autoload -Uz add-zle-hook-widget
|
|
||||||
function zle_application_mode_start { echoti smkx }
|
|
||||||
function zle_application_mode_stop { echoti rmkx }
|
|
||||||
add-zle-hook-widget -Uz zle-line-init zle_application_mode_start
|
|
||||||
add-zle-hook-widget -Uz zle-line-finish zle_application_mode_stop
|
|
||||||
fi
|
|
||||||
## }}}
|
|
||||||
## {{{ End
|
|
||||||
## Source local zsh configuration.
|
|
||||||
source_readable "$HOME/.zshrc.local"
|
|
||||||
## }}}
|
|
Loading…
x
Reference in New Issue
Block a user