mirror of
https://github.com/eRgo35/dots.git
synced 2025-12-16 15:36:11 +01:00
187 lines
5.6 KiB
Bash
Executable File
187 lines
5.6 KiB
Bash
Executable File
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
|
|
# Initialization code that may require console input (password prompts, [y/n]
|
|
# confirmations, etc.) must go above this block; everything else may go below.
|
|
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
|
|
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
|
|
fi
|
|
|
|
# Lines configured by zsh-newuser-install
|
|
HISTFILE=~/.local/state/zsh/histfile
|
|
HISTSIZE=10000000
|
|
SAVEHIST=10000000
|
|
setopt extendedglob
|
|
unsetopt autocd beep
|
|
bindkey -v
|
|
# End of lines configured by zsh-newuser-install
|
|
# The following lines were added by compinstall
|
|
zstyle :compinstall filename '/home/mike/.config/zsh/.zshrc'
|
|
|
|
autoload -Uz compinit
|
|
compinit
|
|
_comp_options+=(globdots)
|
|
# End of lines added by compinstall
|
|
|
|
source '/usr/share/zsh-antidote/antidote.zsh'
|
|
antidote load
|
|
source ~/.config/zsh/.aliases
|
|
|
|
# vi mode
|
|
bindkey -v
|
|
export KEYTIMEOUT=1
|
|
|
|
# Use vim keys in tab complete menu:
|
|
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 -v '^?' backward-delete-char
|
|
|
|
# Change cursor shape for different vi modes.
|
|
function zle-keymap-select {
|
|
if [[ ${KEYMAP} == vicmd ]] ||
|
|
[[ $1 = 'block' ]]; then
|
|
echo -ne '\e[1 q'
|
|
elif [[ ${KEYMAP} == main ]] ||
|
|
[[ ${KEYMAP} == viins ]] ||
|
|
[[ ${KEYMAP} = '' ]] ||
|
|
[[ $1 = 'beam' ]]; then
|
|
echo -ne '\e[5 q'
|
|
fi
|
|
}
|
|
zle -N zle-keymap-select
|
|
zle-line-init() {
|
|
zle -K viins # initiate `vi insert` as keymap (can be removed if `bindkey -V` has been set elsewhere)
|
|
echo -ne "\e[5 q"
|
|
}
|
|
zle -N zle-line-init
|
|
echo -ne '\e[5 q' # Use beam shape cursor on startup.
|
|
preexec() { echo -ne '\e[5 q' ;} # Use beam shape cursor for each new prompt.
|
|
|
|
# Use lf to switch directories and bind it to ctrl-o
|
|
lfcd () {
|
|
tmp="$(mktemp)"
|
|
lf -last-dir-path="$tmp" "$@"
|
|
if [ -f "$tmp" ]; then
|
|
dir="$(cat "$tmp")"
|
|
rm -f "$tmp"
|
|
[ -d "$dir" ] && [ "$dir" != "$(pwd)" ] && cd "$dir"
|
|
fi
|
|
}
|
|
bindkey -s '^o' 'lfcd\n'
|
|
|
|
# Edit line in vim with ctrl-e:
|
|
autoload edit-command-line; zle -N edit-command-line
|
|
bindkey '^e' edit-command-line
|
|
|
|
# =============================================================================
|
|
#
|
|
# Utility functions for zoxide.
|
|
#
|
|
|
|
# pwd based on the value of _ZO_RESOLVE_SYMLINKS.
|
|
function __zoxide_pwd() {
|
|
\builtin pwd -L
|
|
}
|
|
|
|
# cd + custom logic based on the value of _ZO_ECHO.
|
|
function __zoxide_cd() {
|
|
# shellcheck disable=SC2164
|
|
\builtin cd -- "$@"
|
|
}
|
|
|
|
# =============================================================================
|
|
#
|
|
# Hook configuration for zoxide.
|
|
#
|
|
|
|
# Hook to add new entries to the database.
|
|
function __zoxide_hook() {
|
|
# shellcheck disable=SC2312
|
|
\command zoxide add -- "$(__zoxide_pwd)"
|
|
}
|
|
|
|
# Initialize hook.
|
|
# shellcheck disable=SC2154
|
|
if [[ ${precmd_functions[(Ie)__zoxide_hook]:-} -eq 0 ]] && [[ ${chpwd_functions[(Ie)__zoxide_hook]:-} -eq 0 ]]; then
|
|
chpwd_functions+=(__zoxide_hook)
|
|
fi
|
|
|
|
# =============================================================================
|
|
#
|
|
# When using zoxide with --no-cmd, alias these internal functions as desired.
|
|
#
|
|
|
|
__zoxide_z_prefix='z#'
|
|
|
|
# Jump to a directory using only keywords.
|
|
function __zoxide_z() {
|
|
# shellcheck disable=SC2199
|
|
if [[ "$#" -eq 0 ]]; then
|
|
__zoxide_cd ~
|
|
elif [[ "$#" -eq 1 ]] && { [[ -d "$1" ]] || [[ "$1" = '-' ]] || [[ "$1" =~ ^[-+][0-9]$ ]]; }; then
|
|
__zoxide_cd "$1"
|
|
elif [[ "$@[-1]" == "${__zoxide_z_prefix}"?* ]]; then
|
|
# shellcheck disable=SC2124
|
|
\builtin local result="${@[-1]}"
|
|
__zoxide_cd "${result:${#__zoxide_z_prefix}}"
|
|
else
|
|
\builtin local result
|
|
# shellcheck disable=SC2312
|
|
result="$(\command zoxide query --exclude "$(__zoxide_pwd)" -- "$@")" &&
|
|
__zoxide_cd "${result}"
|
|
fi
|
|
}
|
|
|
|
# Jump to a directory using interactive search.
|
|
function __zoxide_zi() {
|
|
\builtin local result
|
|
result="$(\command zoxide query --interactive -- "$@")" && __zoxide_cd "${result}"
|
|
}
|
|
|
|
# Completions.
|
|
if [[ -o zle ]]; then
|
|
function __zoxide_z_complete() {
|
|
# Only show completions when the cursor is at the end of the line.
|
|
# shellcheck disable=SC2154
|
|
[[ "${#words[@]}" -eq "${CURRENT}" ]] || return 0
|
|
|
|
if [[ "${#words[@]}" -eq 2 ]]; then
|
|
_files -/
|
|
elif [[ "${words[-1]}" == '' ]] && [[ "${words[-2]}" != "${__zoxide_z_prefix}"?* ]]; then
|
|
\builtin local result
|
|
# shellcheck disable=SC2086,SC2312
|
|
if result="$(\command zoxide query --exclude "$(__zoxide_pwd)" --interactive -- ${words[2,-1]})"; then
|
|
result="${__zoxide_z_prefix}${result}"
|
|
# shellcheck disable=SC2296
|
|
compadd -Q "${(q-)result}"
|
|
fi
|
|
\builtin printf '\e[5n'
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
\builtin bindkey '\e[0n' 'reset-prompt'
|
|
[[ "${+functions[compdef]}" -ne 0 ]] && \compdef __zoxide_z_complete __zoxide_z
|
|
fi
|
|
|
|
# =============================================================================
|
|
#
|
|
# Commands for zoxide. Disable these using --no-cmd.
|
|
#
|
|
|
|
\builtin alias cd=__zoxide_z
|
|
\builtin alias cdi=__zoxide_zi
|
|
|
|
# =============================================================================
|
|
#
|
|
# To initialize zoxide, add this to your configuration (usually ~/.zshrc):
|
|
#
|
|
eval "$(zoxide init zsh)"
|
|
|
|
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
|
|
[[ ! -f ~/.config/zsh/.p10k.zsh ]] || source ~/.config/zsh/.p10k.zsh
|
|
|
|
# . "$HOME/.cargo/env"
|
|
|
|
. "/home/mike/.local/share/cargo/env"
|