feat(zsh): automatically expand aliases

Automatically expand aliases after the space key is pressed, unless it
was added using the `ialias` function.

This is something that I saw on Sebastian Daschner's videos
(https://www.sebastian-daschner.com,
https://www.youtube.com/@SebastianDaschnerIT) and is from his dotfiles
(https://github.com/sdaschner/dotfiles).
This commit is contained in:
Oliver Davies 2023-01-08 08:44:28 +00:00
parent 0d25b9348e
commit ac0c71775d

View file

@ -36,6 +36,66 @@
compdef g=git
clear-ls-all() {
clear
exa -al
}
zle -N clear-ls-all
bindkey '^K' clear-ls-all
clear-git-status() {
clear
git status -sb .
}
zle -N clear-git-status
bindkey '^G' clear-git-status
# auto-completes aliases
# enables to define
# - normal aliases (completed with trailing space)
# - blank aliases (completed without space)
# - ignored aliases (not completed)
# ignored aliases
typeset -a ialiases
ialiases=()
ialias() {
alias $@
args="$@"
args=''${args%%\=*}
ialiases+=(''${args##* })
}
# blank aliases
typeset -a baliases
baliases=()
balias() {
alias $@
args="$@"
args=''${args%%\=*}
baliases+=(''${args##* })
}
expand-alias-space() {
[[ $LBUFFER =~ "\<(''${(j:|:)baliases})\$" ]]; insertBlank=$?
if [[ ! $LBUFFER =~ "\<(''${(j:|:)ialiases})\$" ]]; then
zle _expand_alias
fi
zle self-insert
if [[ "$insertBlank" = "0" ]]; then
zle backward-delete-char
fi
}
zle -N expand-alias-space
bindkey " " expand-alias-space
bindkey -M isearch " " magic-space
setopt auto_cd
setopt auto_pushd
setopt pushd_ignore_dups