forked from misc/zsh-config
Add support for atuin integration, Homebrew on Linux and eza as ls replacement (#17)
This is basically adding support for bazzite-cli usage. --------- Co-authored-by: Vladimir Viatskii <vladimir@vtsk.online> Reviewed-on: misc/zsh-config#17 Co-authored-by: Vladimir Viatskii <vladimir@hodakov.me>
This commit is contained in:
1 parent
f655fbf527
commit
e7b0a9b313
7 files changed
+115
-21
No files matched your search
@@ -4,8 +4,18 @@ if [ "${OS}" = "Darwin" ] && [ "${OS_ARCH}" = "arm64" ]; then
|
|||||||
export fpath=(${fpath} /opt/homebrew/share/zsh/site-functions)
|
export fpath=(${fpath} /opt/homebrew/share/zsh/site-functions)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# The same goes for Homebrew on Linux.
|
||||||
|
# Yes, /home/linuxbrew is universal for every standard brew install on Linux.
|
||||||
|
if [ "${OS}" = "Linux" ] && [ -d "/home/linuxbrew/.linuxbrew/share/zsh/site-functions" ]; then
|
||||||
|
export fpath=(${fpath} /home/linuxbrew/.linuxbrew/share/zsh/site-functions)
|
||||||
|
fi
|
||||||
|
|
||||||
autoload -Uz compinit
|
autoload -Uz compinit
|
||||||
compinit
|
compinit
|
||||||
zstyle ':completion:*' menu select=2
|
zstyle ':completion:*' menu select=2
|
||||||
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
|
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
|
||||||
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
|
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
|
||||||
|
|
||||||
|
if [ "${LIMA_DOCKER}" = "1" ]; then
|
||||||
|
compdef docker-amd64=docker
|
||||||
|
fi
|
||||||
+23
-19
@@ -22,26 +22,30 @@ select-word-style bash
|
|||||||
|
|
||||||
bindkey '\ew' kill-region # [Esc-w] - Kill from the cursor to the mark
|
bindkey '\ew' kill-region # [Esc-w] - Kill from the cursor to the mark
|
||||||
bindkey -s '\el' 'ls\n' # [Esc-l] - run command: ls
|
bindkey -s '\el' 'ls\n' # [Esc-l] - run command: ls
|
||||||
bindkey '^r' history-incremental-search-backward # [Ctrl-r] - Search backward incrementally for a specified string. The string may begin with ^ to anchor the search to the beginning of the line.
|
|
||||||
if [[ "${terminfo[kpp]}" != "" ]]; then
|
|
||||||
bindkey "${terminfo[kpp]}" up-line-or-history # [PageUp] - Up a line of history
|
|
||||||
fi
|
|
||||||
if [[ "${terminfo[knp]}" != "" ]]; then
|
|
||||||
bindkey "${terminfo[knp]}" down-line-or-history # [PageDown] - Down a line of history
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "${terminfo[kcuu1]}" != "" ]]; then
|
# Search history bindings. They apply if atuin is not installed.
|
||||||
bindkey "${terminfo[kcuu1]}" up-line-or-search # start typing + [Up-Arrow] - fuzzy find history forward
|
if [[ ! -x $(command -v atuin) ]]; then
|
||||||
fi
|
bindkey '^r' history-incremental-search-backward # [Ctrl-r] - Search backward incrementally for a specified string. The string may begin with ^ to anchor the search to the beginning of the line.
|
||||||
if [[ "${terminfo[kcud1]}" != "" ]]; then
|
if [[ "${terminfo[kpp]}" != "" ]]; then
|
||||||
bindkey "${terminfo[kcud1]}" down-line-or-search # start typing + [Down-Arrow] - fuzzy find history backward
|
bindkey "${terminfo[kpp]}" up-line-or-history # [PageUp] - Up a line of history
|
||||||
|
fi
|
||||||
|
if [[ "${terminfo[knp]}" != "" ]]; then
|
||||||
|
bindkey "${terminfo[knp]}" down-line-or-history # [PageDown] - Down a line of history
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "${terminfo[kcuu1]}" != "" ]]; then
|
||||||
|
bindkey "${terminfo[kcuu1]}" up-line-or-search # start typing + [Up-Arrow] - fuzzy find history forward
|
||||||
|
fi
|
||||||
|
if [[ "${terminfo[kcud1]}" != "" ]]; then
|
||||||
|
bindkey "${terminfo[kcud1]}" down-line-or-search # start typing + [Down-Arrow] - fuzzy find history backward
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "${terminfo[khome]}" != "" ]]; then
|
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
|
fi
|
||||||
if [[ "${terminfo[kend]}" != "" ]]; then
|
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
|
fi
|
||||||
|
|
||||||
bindkey ' ' magic-space # [Space] - do history expansion
|
bindkey ' ' magic-space # [Space] - do history expansion
|
||||||
@@ -50,16 +54,16 @@ bindkey '^[[1;5C' forward-word # [Ctrl-RightArrow] - move
|
|||||||
bindkey '^[[1;5D' backward-word # [Ctrl-LeftArrow] - move backward one word
|
bindkey '^[[1;5D' backward-word # [Ctrl-LeftArrow] - move backward one word
|
||||||
|
|
||||||
if [[ "${terminfo[kcbt]}" != "" ]]; then
|
if [[ "${terminfo[kcbt]}" != "" ]]; then
|
||||||
bindkey "${terminfo[kcbt]}" reverse-menu-complete # [Shift-Tab] - move through the completion menu backwards
|
bindkey "${terminfo[kcbt]}" reverse-menu-complete # [Shift-Tab] - move through the completion menu backwards
|
||||||
fi
|
fi
|
||||||
|
|
||||||
bindkey '^?' backward-delete-char # [Backspace] - delete backward
|
bindkey '^?' backward-delete-char # [Backspace] - delete backward
|
||||||
if [[ "${terminfo[kdch1]}" != "" ]]; then
|
if [[ "${terminfo[kdch1]}" != "" ]]; then
|
||||||
bindkey "${terminfo[kdch1]}" delete-char # [Delete] - delete forward
|
bindkey "${terminfo[kdch1]}" delete-char # [Delete] - delete forward
|
||||||
else
|
else
|
||||||
bindkey "^[[3~" delete-char
|
bindkey "^[[3~" delete-char
|
||||||
bindkey "^[3;5~" delete-char
|
bindkey "^[3;5~" delete-char
|
||||||
bindkey "\e[3~" delete-char
|
bindkey "\e[3~" delete-char
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case "${TERM}" in
|
case "${TERM}" in
|
||||||
|
|||||||
@@ -6,4 +6,4 @@ alias ls="ls --color"
|
|||||||
alias sl="ls --color"
|
alias sl="ls --color"
|
||||||
|
|
||||||
# Git.
|
# Git.
|
||||||
alias got="git"
|
alias got="git"
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
atuin_init() {
|
||||||
|
eval "$(atuin init zsh)"
|
||||||
|
}
|
||||||
|
|
||||||
|
atuin_init
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
function bazzite-cli() {
|
||||||
|
# Those two are conflicting with Bazzite CLI aliases.
|
||||||
|
unalias ls
|
||||||
|
unalias sl
|
||||||
|
|
||||||
|
source /usr/share/bazzite-cli/bling.sh
|
||||||
|
}
|
||||||
|
|
||||||
|
bazzite-cli
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
# Functions for docker in Lima for macOS.
|
||||||
|
# Requires lima, docker, docker-compose and docker-credentials-helper to be installed.
|
||||||
|
|
||||||
|
if [ "${OS/Darwin}" != "${OS}" ]; then
|
||||||
|
LIMA_DOCKER=1
|
||||||
|
|
||||||
|
# Candidates cobra offers for the last argument, one per line, without the directive line or descriptions
|
||||||
|
function _docker_complete() {
|
||||||
|
local -a out=("${(@f)$(command docker __complete "$@" 2>/dev/null)}")
|
||||||
|
print -rl -- "${(@)${(@)out:#:*}%%$'\t'*}"
|
||||||
|
}
|
||||||
|
|
||||||
|
function _docker_with_platform() {
|
||||||
|
local platform=$1 extra=$2
|
||||||
|
shift 2
|
||||||
|
local -a args=("$@")
|
||||||
|
|
||||||
|
# Completion requests and explicitly pinned platforms pass through untouched
|
||||||
|
if [[ $1 == __complete* ]] || (( ${args[(I)(--platform|--platform=*)]} )); then
|
||||||
|
command docker "$@"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Walk the command path; stop at the first command that accepts --platform
|
||||||
|
local -i i pos=0
|
||||||
|
local -a cmds flags
|
||||||
|
for (( i = 1; i <= $#args; i++ )); do
|
||||||
|
[[ ${args[i]} == -* ]] && continue
|
||||||
|
|
||||||
|
cmds=("${(@f)$(_docker_complete "${(@)args[1,i-1]}" "")}")
|
||||||
|
if (( ! ${cmds[(Ie)${args[i]}]} )); then
|
||||||
|
# Not a command: either the previous option's value, or we've left the command path
|
||||||
|
(( i > 1 )) && [[ ${args[i-1]} == -* && ${args[i-1]} != *=* ]] && continue
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
flags=("${(@f)$(_docker_complete "${(@)args[1,i]}" -)}")
|
||||||
|
if (( ${flags[(Ie)--platform]} )); then
|
||||||
|
pos=$i
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if (( pos )); then
|
||||||
|
local -a inject=(--platform=$platform)
|
||||||
|
local f name
|
||||||
|
for f in ${=extra}; do
|
||||||
|
name=${f%%=*}
|
||||||
|
# Only if this command accepts it and the user didn't pass it already
|
||||||
|
(( ${flags[(Ie)$name]} && ! ${args[(I)$name(|=*)]} )) && inject+=("$f")
|
||||||
|
done
|
||||||
|
args=("${(@)args[1,pos]}" $inject "${(@)args[pos+1,-1]}")
|
||||||
|
print -u2 $'\e[34m-> docker '"${(j: :)${(@q-)args}}"$'\e[0m'
|
||||||
|
fi
|
||||||
|
|
||||||
|
command docker "${args[@]}"
|
||||||
|
}
|
||||||
|
|
||||||
|
function docker() {
|
||||||
|
_docker_with_platform "linux/arm64/v8" "" "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
function docker-amd64() {
|
||||||
|
_docker_with_platform "linux/amd64" "--device=lima-vm.io/rosetta=cached" "$@"
|
||||||
|
}
|
||||||
|
fi
|
||||||
@@ -1,2 +1,2 @@
|
|||||||
# Apps list to enable.
|
# Apps list to enable.
|
||||||
ENABLED_APPS=("showcolors")
|
ENABLED_APPS=("gitinfo" "showcolors")
|
||||||
Reference in new issue
Block a user