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:
parent
0d25b9348e
commit
ac0c71775d
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue