Streamline zsh config
This commit is contained in:
@@ -1,45 +0,0 @@
|
||||
setopt EXTENDED_HISTORY
|
||||
setopt HIST_EXPIRE_DUPS_FIRST
|
||||
setopt HIST_VERIFY
|
||||
setopt INC_APPEND_HISTORY
|
||||
setopt SHARE_HISTORY
|
||||
setopt AUTO_CD
|
||||
setopt APPEND_HISTORY
|
||||
setopt HIST_IGNORE_DUPS
|
||||
setopt NOHIST_IGNORE_ALL_DUPS
|
||||
setopt HIST_IGNORE_SPACE
|
||||
setopt CORRECT
|
||||
setopt RM_STAR_SILENT
|
||||
setopt BG_NICE
|
||||
setopt CHECK_JOBS
|
||||
setopt HUP
|
||||
setopt LONG_LIST_JOBS
|
||||
|
||||
setopt share_history
|
||||
|
||||
bindkey -e
|
||||
|
||||
autoload -U promptinit
|
||||
promptinit
|
||||
|
||||
autoload -U colors
|
||||
colors
|
||||
|
||||
autoload -U compinit
|
||||
compinit
|
||||
zstyle ':completion:*' menu select
|
||||
setopt completealiases
|
||||
|
||||
autoload -U edit-command-line
|
||||
zle -N edit-command-line
|
||||
bindkey '^xe' edit-command-line
|
||||
bindkey '^x^e' edit-command-line
|
||||
|
||||
HISTSIZE=10000
|
||||
SAVEHIST=10000
|
||||
HISTFILE="$HOME/.zsh_history"
|
||||
|
||||
autoload -Uz vcs_info
|
||||
zstyle ':vcs_info:*' enable git hg
|
||||
zstyle ':vcs_info:*' check-for-changes true
|
||||
zstyle ':vcs_info:git*' formats "%{${fg[cyan]}%}[%{${fg[green]}%}%s%{${fg[cyan]}%}][%{${fg[blue]}%}%r/%S%%{${fg[cyan]}%}][%{${fg[blue]}%}%b%{${fg[yellow]}%}%m%u%c%{${fg[cyan]}%}]%{$reset_color%}"
|
||||
@@ -1,312 +0,0 @@
|
||||
alias vim="nvim"
|
||||
|
||||
### BETTER COMMANDS
|
||||
alias ls="exa --oneline --icons --group-directories-first"
|
||||
alias ll='ls --all --long --classify --group --modified --time-style=long-iso --git'
|
||||
alias la='ls --all'
|
||||
|
||||
alias spm="sudo pacman"
|
||||
|
||||
alias tml="tmux list-sessions"
|
||||
alias tma="tmux ls 2>/dev/null && tmux attach-session || tmux"
|
||||
alias tmn="tmux new-session -A -s"
|
||||
|
||||
alias clipc="xclip -selection primary"
|
||||
alias clipo="xclip -out -selection clipboard"
|
||||
|
||||
alias rgrep="grep -r"
|
||||
|
||||
alias vimrc="vim -c ':e \$MYVIMRC'"
|
||||
alias zshrc="vim -c ':e ~/.zshrc' ; source ~/.zshrc"
|
||||
|
||||
alias calc='python3 -ic "from math import *; import cmath"'
|
||||
|
||||
alias le_haxxor_1='clear && dmesg | pv -qL 20'
|
||||
alias le_haxxor_2='clear && hexdump -C /dev/urandom | pv -qlL 2'
|
||||
|
||||
alias root='sudo -sE'
|
||||
|
||||
### USEFUL DEFAULT OPTIONS
|
||||
alias tmux="tmux -2"
|
||||
|
||||
alias chmod="chmod -c"
|
||||
alias chown="chown -c"
|
||||
|
||||
alias diff="diff --color=auto"
|
||||
|
||||
alias grep='grep --color=auto'
|
||||
alias fgrep='fgrep --color=auto'
|
||||
alias egrep='egrep --color=auto'
|
||||
|
||||
alias rg='rg --hidden --glob "!.git/**"'
|
||||
|
||||
alias rm='rm -v'
|
||||
alias cp='cp -vi'
|
||||
alias mv='mv -vi'
|
||||
alias ln='ln -v'
|
||||
|
||||
alias du='du -h'
|
||||
alias df='df -h'
|
||||
|
||||
### SHORTENING COMMAND NAMES
|
||||
alias cs="cryptsetup"
|
||||
alias v="vim"
|
||||
alias g="git"
|
||||
alias c="cd"
|
||||
alias l="ls"
|
||||
alias s="sudo"
|
||||
alias cl="clear"
|
||||
|
||||
alias nocolor="sed -r \"s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g\""
|
||||
|
||||
alias ip="ip -color"
|
||||
|
||||
alias vimtask="vim -c :TW"
|
||||
|
||||
alias tw="task"
|
||||
alias twl="task list"
|
||||
alias twa="task add"
|
||||
alias twd="task done"
|
||||
alias inbox="task add +inbox"
|
||||
|
||||
alias yaml2json="python3 -c 'import sys, yaml, json; json.dump([d for d in yaml.safe_load_all(sys.stdin)][-1], sys.stdout, indent=4)'"
|
||||
alias json2yaml="python3 -c 'import sys, yaml, json; yaml.safe_dump(json.loads(sys.stdin.read()), stream=sys.stdout)'"
|
||||
|
||||
alias currentbranch='git rev-parse --abbrev-ref HEAD'
|
||||
|
||||
alias issh="ssh -o StrictHostKeyChecking=false -o UserKnownHostsFile=/dev/null"
|
||||
alias gfix='git commit --amend --no-edit'
|
||||
alias gfixa='git commit --amend --no-edit --all '
|
||||
alias gfixp='git commit --amend --no-edit --patch'
|
||||
|
||||
alias issh="ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
|
||||
|
||||
alias newpw="pwgen --secure 25 1"
|
||||
|
||||
alias sys="systemctl"
|
||||
alias sysu="systemctl --user"
|
||||
|
||||
alias gpg=gpg2
|
||||
|
||||
alias alacritty="alacritty --config-file $HOME/.config/alacritty.toml"
|
||||
|
||||
alias d=docker
|
||||
alias dc=docker-compose
|
||||
|
||||
alias hx=helix
|
||||
alias h=helix
|
||||
|
||||
gitmaster() {
|
||||
git stash push -m gitmaster-$(date -uIseconds) -u || return 1
|
||||
_branch=$(git rev-parse --abbrev-ref HEAD)
|
||||
git fe || return 1
|
||||
git checkout master || return 1
|
||||
git merge origin/master || return 1
|
||||
git checkout $_branch
|
||||
git stash pop
|
||||
}
|
||||
|
||||
_remote() {
|
||||
[[ -n "$SSH_CONNECTION" ]]
|
||||
}
|
||||
|
||||
cd() {
|
||||
builtin cd "$@" && ls
|
||||
}
|
||||
|
||||
mount() {
|
||||
if [[ $# == 0 ]] ; then
|
||||
command mount | column -t
|
||||
else
|
||||
command mount "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
extr()
|
||||
{
|
||||
if [[ -f "$1" ]] ; then
|
||||
case "$1" in
|
||||
*.tar.bz2 ) tar xvjf "$1" ;;
|
||||
*.tar.gz ) tar xvzf "$1" ;;
|
||||
*.tar.xz ) tar xvJf "$1" ;;
|
||||
*.bz2 ) bunzip2 "$1" ;;
|
||||
*.rar ) unrar x "$1" ;;
|
||||
*.gz ) gunzip "$1" ;;
|
||||
*.tar ) tar xvf "$1" ;;
|
||||
*.tbz2 ) tar xvjf "$1" ;;
|
||||
*.tgz ) tar xvzf "$1" ;;
|
||||
*.zip ) unzip "$1" ;;
|
||||
*.Z ) uncompress "$1" ;;
|
||||
*.7z ) 7z x "$1" ;;
|
||||
*)
|
||||
echo "$1 cannot be extracted via $0"
|
||||
;;
|
||||
esac
|
||||
else
|
||||
echo "$1 is not a valid file"
|
||||
fi
|
||||
}
|
||||
|
||||
ruler() {
|
||||
for s in '....^....|' '1234567890'; do
|
||||
w=${#s}
|
||||
str=$(for (( i=1; $i<=$(( ($COLUMNS + $w) / $w )) ; i=$i+1 )); do echo -n $s; done )
|
||||
str=$(echo $str | cut -c -$COLUMNS)
|
||||
echo $str
|
||||
done
|
||||
}
|
||||
|
||||
addext() {
|
||||
[[ -z "$1" ]] || [[ -z "$2" ]] && { echo "Usage: $0 <file> <extension>" ; return }
|
||||
mv "$1" "$1$2"
|
||||
}
|
||||
|
||||
rmext() {
|
||||
[[ -e "$1" ]] && mv -i "$1" "${1%.*}"
|
||||
}
|
||||
|
||||
|
||||
ckwww() {
|
||||
ping -c 3 www.google.com
|
||||
}
|
||||
|
||||
httpcode() {
|
||||
curl http://httpcode.info/$1
|
||||
}
|
||||
|
||||
bak() {
|
||||
if ! [[ "$1" ]] ; then
|
||||
printf '%s\n' "usage: $0 FILE"
|
||||
return 1
|
||||
fi
|
||||
if ! [[ -e "$1" ]] ; then
|
||||
printf '%s\n' "\"$1\" not found"
|
||||
return 1
|
||||
fi
|
||||
name="$1.$(date +%Y%m%d%H%M%S.bak)"
|
||||
if [[ -e "${name}" ]] ; then
|
||||
printf '%s\n' "Backup file \"$name\" already exists"
|
||||
return 1
|
||||
fi
|
||||
cp --archive --verbose --no-clobber "$1" "${name}"
|
||||
}
|
||||
|
||||
fstab() {
|
||||
# yeah
|
||||
expand /etc/fstab | grep -v '^#' | grep -P '^.+$' | tr -s ' ' | tr ' ' '|' | cat <(grep -P '<.+>' /etc/fstab | cut -f 2- -d ' ' | sed 's/>[^<]*</>|</g') - | column -ts '|'
|
||||
}
|
||||
|
||||
serve() {
|
||||
python3 -m http.server 8800
|
||||
}
|
||||
|
||||
manpdf() {
|
||||
[[ -z "$1" ]] && { printf '%s' >&2 "$(man)" ; return ; }
|
||||
man -t "$1" | ps2pdf - - | zathura -
|
||||
}
|
||||
|
||||
myip4() {
|
||||
curl "http://ipv4.icanhazip.com"
|
||||
}
|
||||
|
||||
myip6() {
|
||||
curl "http://ipv6.icanhazip.com" 2>/dev/null || echo "no ip6"
|
||||
}
|
||||
|
||||
diffdir() {
|
||||
[[ "$1" ]] && [[ "$2" ]] || { echo "$0 <dir1> <dir2>" ; return 1 ; }
|
||||
diff <(cd "$1" && find -type f -exec md5sum {} \;) <(cd "$2" && find -type f -exec md5sum {} \;)
|
||||
}
|
||||
|
||||
diffdir2() {
|
||||
[[ "$1" ]] && [[ "$2" ]] || { echo "$0 <dir1> <dir2>" ; return 1 ; }
|
||||
comm -13 <(cd "$1" && find -type f | sort -g) <(cd "$2" && find -type f | sort -g)
|
||||
}
|
||||
|
||||
bm() {
|
||||
case "$1" in
|
||||
dev)
|
||||
cd "$HOME/development/projects"
|
||||
;;
|
||||
dot)
|
||||
cd "$HOME/dotfiles"
|
||||
;;
|
||||
*)
|
||||
echo "unknown target"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
man() {
|
||||
env LESS_TERMCAP_mb=$'\E[01;31m' \
|
||||
LESS_TERMCAP_md=$'\E[01;38;5;74m' \
|
||||
LESS_TERMCAP_me=$'\E[0m' \
|
||||
LESS_TERMCAP_se=$'\E[0m' \
|
||||
LESS_TERMCAP_so=$'\E[38;5;246m' \
|
||||
LESS_TERMCAP_ue=$'\E[0m' \
|
||||
LESS_TERMCAP_us=$'\E[04;38;5;146m' \
|
||||
man "$@"
|
||||
}
|
||||
|
||||
resolvecd() {
|
||||
cd "$(readlink -f $(pwd))"
|
||||
}
|
||||
|
||||
ssht () {
|
||||
ssh -t $@ "tmux a || tmux";
|
||||
}
|
||||
|
||||
t() {
|
||||
if [[ "$1" ]] ; then
|
||||
tmux new-session -A -s "$1"
|
||||
else
|
||||
tmux attach-session
|
||||
fi
|
||||
}
|
||||
|
||||
b() {
|
||||
bookmarks=${DOTFILES}/bookmarks
|
||||
bookmark="$1"
|
||||
if ! [[ "${bookmark}" ]] ; then
|
||||
printf 'Need a bookmark' >&2
|
||||
return 1
|
||||
fi
|
||||
if ! [[ -r "${bookmark}" ]] ; then
|
||||
printf 'Invalid bookmark %s' "${bookmark}" >&2
|
||||
return 1
|
||||
fi
|
||||
target="$(head -1 ${bookmark})"
|
||||
if ! [[ -e "${target}" ]] ; then
|
||||
printf 'Traget not found: %s' "${target}" >&2
|
||||
fi
|
||||
cd "$(eval ${target})"
|
||||
}
|
||||
|
||||
sb() {
|
||||
echo $(( $1 * $(cat /sys/class/backlight/intel_backlight/max_brightness) / 100)) | sudo tee /sys/class/backlight/intel_backlight/brightness
|
||||
}
|
||||
|
||||
clip() {
|
||||
tee >(xclip -selection clipboard) | tee >(xclip -selection primary)
|
||||
}
|
||||
|
||||
gb() {
|
||||
_superproject="$(git rev-parse --show-superproject-working-tree)"
|
||||
_root="$(git rev-parse --show-toplevel)"
|
||||
if [[ -n "${_superproject}" ]] ; then
|
||||
if [[ "$(pwd)" == "${_root}" ]] ; then
|
||||
builtin cd "${_superproject}"
|
||||
else
|
||||
builtin cd "${_root}"
|
||||
fi
|
||||
else
|
||||
builtin cd "${_root}"
|
||||
fi
|
||||
}
|
||||
|
||||
meetingnotes() {
|
||||
[[ "${1}" ]] || return 1
|
||||
file="$(date +%Y-%m-%d)-${1}.md"
|
||||
cp ~/snippets/meetingnotes.md "${file}"
|
||||
$EDITOR "${file}"
|
||||
}
|
||||
@@ -1,246 +0,0 @@
|
||||
_remote() {
|
||||
[[ -n "$SSH_CONNECTION" ]]
|
||||
}
|
||||
|
||||
cd() {
|
||||
builtin cd "$@" && ls
|
||||
}
|
||||
|
||||
mount() {
|
||||
if [[ $# == 0 ]] ; then
|
||||
command mount | column -t
|
||||
else
|
||||
command mount "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
extr()
|
||||
{
|
||||
if [[ -f "$1" ]] ; then
|
||||
case "$1" in
|
||||
*.tar.bz2 ) tar xvjf "$1" ;;
|
||||
*.tar.gz ) tar xvzf "$1" ;;
|
||||
*.tar.xz ) tar xvJf "$1" ;;
|
||||
*.bz2 ) bunzip2 "$1" ;;
|
||||
*.rar ) unrar x "$1" ;;
|
||||
*.gz ) gunzip "$1" ;;
|
||||
*.tar ) tar xvf "$1" ;;
|
||||
*.tbz2 ) tar xvjf "$1" ;;
|
||||
*.tgz ) tar xvzf "$1" ;;
|
||||
*.zip ) unzip "$1" ;;
|
||||
*.Z ) uncompress "$1" ;;
|
||||
*.7z ) 7z x "$1" ;;
|
||||
*)
|
||||
echo "$1 cannot be extracted via $0"
|
||||
;;
|
||||
esac
|
||||
else
|
||||
echo "$1 is not a valid file"
|
||||
fi
|
||||
}
|
||||
|
||||
ruler() {
|
||||
for s in '....^....|' '1234567890'; do
|
||||
w=${#s}
|
||||
str=$(for (( i=1; $i<=$(( ($COLUMNS + $w) / $w )) ; i=$i+1 )); do echo -n $s; done )
|
||||
str=$(echo $str | cut -c -$COLUMNS)
|
||||
echo $str
|
||||
done
|
||||
}
|
||||
|
||||
addext() {
|
||||
[[ -z "$1" ]] || [[ -z "$2" ]] && { echo "Usage: $0 <file> <extension>" ; return }
|
||||
mv "$1" "$1$2"
|
||||
}
|
||||
|
||||
rmext() {
|
||||
[[ -e "$1" ]] && mv -i "$1" "${1%.*}"
|
||||
}
|
||||
|
||||
|
||||
ckwww() {
|
||||
ping -c 3 www.google.com
|
||||
}
|
||||
|
||||
httpcode() {
|
||||
curl http://httpcode.info/$1
|
||||
}
|
||||
|
||||
bak() {
|
||||
if ! [[ "$1" ]] ; then
|
||||
printf '%s\n' "usage: $0 FILE"
|
||||
return 1
|
||||
fi
|
||||
if ! [[ -e "$1" ]] ; then
|
||||
printf '%s\n' "\"$1\" not found"
|
||||
return 1
|
||||
fi
|
||||
name="$1.$(date +%Y%m%d%H%M%S.bak)"
|
||||
if [[ -e "${name}" ]] ; then
|
||||
printf '%s\n' "Backup file \"$name\" already exists"
|
||||
return 1
|
||||
fi
|
||||
cp --archive --verbose --no-clobber "$1" "${name}"
|
||||
}
|
||||
|
||||
fstab() {
|
||||
# yeah
|
||||
expand /etc/fstab | grep -v '^#' | grep -P '^.+$' | tr -s ' ' | tr ' ' '|' | cat <(grep -P '<.+>' /etc/fstab | cut -f 2- -d ' ' | sed 's/>[^<]*</>|</g') - | column -ts '|'
|
||||
}
|
||||
|
||||
serve() {
|
||||
python3 -m http.server 8800
|
||||
}
|
||||
|
||||
manpdf() {
|
||||
[[ -z "$1" ]] && { printf '%s' >&2 "$(man)" ; return ; }
|
||||
man -t "$1" | ps2pdf - - | zathura -
|
||||
}
|
||||
|
||||
myip4() {
|
||||
curl "http://ipv4.icanhazip.com"
|
||||
}
|
||||
|
||||
myip6() {
|
||||
curl "http://ipv6.icanhazip.com" 2>/dev/null || echo "no ip6"
|
||||
}
|
||||
|
||||
diffdir() {
|
||||
[[ "$1" ]] && [[ "$2" ]] || { echo "$0 <dir1> <dir2>" ; return 1 ; }
|
||||
diff <(cd "$1" && find -type f -exec md5sum {} \;) <(cd "$2" && find -type f -exec md5sum {} \;)
|
||||
}
|
||||
|
||||
diffdir2() {
|
||||
[[ "$1" ]] && [[ "$2" ]] || { echo "$0 <dir1> <dir2>" ; return 1 ; }
|
||||
comm -13 <(cd "$1" && find -type f | sort -g) <(cd "$2" && find -type f | sort -g)
|
||||
}
|
||||
|
||||
bm() {
|
||||
case "$1" in
|
||||
dev)
|
||||
cd "$HOME/development/projects"
|
||||
;;
|
||||
dot)
|
||||
cd "$HOME/dotfiles"
|
||||
;;
|
||||
*)
|
||||
echo "unknown target"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
man() {
|
||||
env LESS_TERMCAP_mb=$'\E[01;31m' \
|
||||
LESS_TERMCAP_md=$'\E[01;38;5;74m' \
|
||||
LESS_TERMCAP_me=$'\E[0m' \
|
||||
LESS_TERMCAP_se=$'\E[0m' \
|
||||
LESS_TERMCAP_so=$'\E[38;5;246m' \
|
||||
LESS_TERMCAP_ue=$'\E[0m' \
|
||||
LESS_TERMCAP_us=$'\E[04;38;5;146m' \
|
||||
man "$@"
|
||||
}
|
||||
|
||||
embiggen() {
|
||||
enscript --no-header --media=A4 --landscape --font="DejaVuSansMono30" -o - 2>/dev/null | ps2pdf - | zathura -
|
||||
}
|
||||
|
||||
resolvecd() {
|
||||
cd "$(readlink -f $(pwd))"
|
||||
}
|
||||
|
||||
ssht () {
|
||||
ssh -t $@ "tmux a || tmux";
|
||||
}
|
||||
|
||||
t() {
|
||||
if [[ "$1" ]] ; then
|
||||
tmux new-session -A -s "$1"
|
||||
else
|
||||
tmux attach-session
|
||||
fi
|
||||
}
|
||||
|
||||
b() {
|
||||
bookmarks=${DOTFILES}/bookmarks
|
||||
bookmark="$1"
|
||||
if ! [[ "${bookmark}" ]] ; then
|
||||
printf 'Need a bookmark' >&2
|
||||
return 1
|
||||
fi
|
||||
if ! [[ -r "${bookmark}" ]] ; then
|
||||
printf 'Invalid bookmark %s' "${bookmark}" >&2
|
||||
return 1
|
||||
fi
|
||||
target="$(head -1 ${bookmark})"
|
||||
if ! [[ -e "${target}" ]] ; then
|
||||
printf 'Traget not found: %s' "${target}" >&2
|
||||
fi
|
||||
cd "$(eval ${target})"
|
||||
}
|
||||
|
||||
sb() {
|
||||
echo $(( $1 * $(cat /sys/class/backlight/intel_backlight/max_brightness) / 100)) | sudo tee /sys/class/backlight/intel_backlight/brightness
|
||||
}
|
||||
|
||||
journal() {
|
||||
journaldir=~/sync/journal/
|
||||
file="$journaldir/$(date +%Y-%m-%d).md"
|
||||
if [[ ! -e $file ]] ; then
|
||||
cp $journaldir/template.md $file || return
|
||||
fi
|
||||
$EDITOR $file
|
||||
}
|
||||
|
||||
syncfolder() {
|
||||
folder=$1
|
||||
mv $folder ~/sync
|
||||
ln -s ~/sync/$folder ~/$folder
|
||||
}
|
||||
|
||||
prefix() {
|
||||
prefix=$2
|
||||
file=$1
|
||||
mv $file ${prefix}${file}
|
||||
}
|
||||
|
||||
tmp() {
|
||||
cd "$(mktemp -d)"
|
||||
}
|
||||
|
||||
kubectl_pod() {
|
||||
kubectl-env mycloud get -n "${1}" pods --field-selector=status.phase=Running --selector=${2} -o jsonpath='{.items[*].metadata.name}'
|
||||
}
|
||||
|
||||
kubectl_deployment() {
|
||||
kubectl-env mycloud get -n "${1}" deployment --selector=${2} -o jsonpath='{.items[*].metadata.name}'
|
||||
}
|
||||
|
||||
# The semver_ checks are inspired by
|
||||
# https://stackoverflow.com/questions/4023830/how-to-compare-two-strings-in-dot-separated-version-format-in-bash
|
||||
semver_lte() {
|
||||
v1="${1}"
|
||||
v2="${2}"
|
||||
|
||||
printf '%s\n%s' "${v1}" "${v2}" | sort --version-sort --check=silent
|
||||
}
|
||||
|
||||
semver_lt() {
|
||||
v1="${1}"
|
||||
v2="${2}"
|
||||
|
||||
semver_lte "${v1}" "${v2}" && [[ ! "${v1}" == "${v2}" ]]
|
||||
}
|
||||
|
||||
semver_gte() {
|
||||
v1="${1}"
|
||||
v2="${2}"
|
||||
|
||||
! semver_lt "${v1}" "${v2}"
|
||||
}
|
||||
|
||||
semver_gt() {
|
||||
v1="${1}"
|
||||
v2="${2}"
|
||||
|
||||
! semver_lte "${v1}" "${v2}"
|
||||
}
|
||||
@@ -1,62 +0,0 @@
|
||||
autoload -Uz vcs_info
|
||||
|
||||
_vcsbase="%{$fg[red]%}[%r] %{$fg[blue]%}[%{%B%}%b%{$fg[red]%}%m%{$fg[blue]%}] %{$fg[red]%}%{%B%}%c%u"
|
||||
|
||||
zstyle ':vcs_info:*' stagedstr 'I'
|
||||
zstyle ':vcs_info:*' unstagedstr 'M'
|
||||
|
||||
zstyle ':vcs_info:*' enable git
|
||||
zstyle ':vcs_info:*' check-for-changes true
|
||||
zstyle ':vcs_info:*' get-revision true
|
||||
|
||||
zstyle ':vcs_info:git*' formats "$_vcsbase"
|
||||
zstyle ':vcs_info:git*' actionformats "%{$fg[red]%}(%a) $_vcsbase"
|
||||
|
||||
zstyle ':vcs_info:git*+set-message:*' hooks git-untracked git-st git-remotebranch
|
||||
|
||||
+vi-git-untracked() {
|
||||
if [[ $(git rev-parse --is-inside-work-tree 2> /dev/null) == 'true' ]] && \
|
||||
[[ $(git ls-files --other --directory --exclude-standard | sed q | wc -l | tr -d ' ') == 1 ]] ; then
|
||||
hook_com[unstaged]+='?%f'
|
||||
fi
|
||||
}
|
||||
|
||||
+vi-git-st() {
|
||||
local ahead behind
|
||||
local -a gitstatus
|
||||
|
||||
ahead=$(git rev-list ${hook_com[branch]}@{upstream}..HEAD 2>/dev/null | wc -l)
|
||||
(( $ahead )) && gitstatus+=( "+${ahead}" )
|
||||
|
||||
behind=$(git rev-list HEAD..${hook_com[branch]}@{upstream} 2>/dev/null | wc -l)
|
||||
(( $behind )) && gitstatus+=( "-${behind}" )
|
||||
|
||||
hook_com[misc]+=${(j:/:)gitstatus}
|
||||
}
|
||||
|
||||
+vi-git-remotebranch() {
|
||||
local remote
|
||||
|
||||
remote=${$(git rev-parse --verify ${hook_com[branch]}@{upstream} \
|
||||
--symbolic-full-name 2>/dev/null)/refs\/remotes\/}
|
||||
|
||||
if [[ -n ${remote} ]] ; then
|
||||
hook_com[branch]="${hook_com[branch]} %b%{$fg[magenta]%}<${remote}>"
|
||||
fi
|
||||
}
|
||||
|
||||
precmd() {
|
||||
vcs_info
|
||||
}
|
||||
|
||||
_topstr='%{$fg[green]%}%n@%m%{$fg[white]%} ─ %{%B$fg[yellow]%}%~%{%b%} ${vcs_info_msg_0_}%{$fg[white]%} '
|
||||
botstr='%B${PINFO}%#%b '
|
||||
|
||||
if _remote ; then
|
||||
_topstr="%{$fg[red]%}[remote]%{$fg[white]%} ${_topstr}"
|
||||
fi
|
||||
|
||||
setopt prompt_subst
|
||||
PROMPT='%{$fg[white]%}┌─ '"${_topstr}"'
|
||||
└─ '"${botstr}"
|
||||
RPROMPT="%{$fg[cyan]%}%*%{$fg[white]%} ─ [%?]"
|
||||
@@ -1,29 +0,0 @@
|
||||
autoload zkbd
|
||||
|
||||
bindkey "\e[1~" beginning-of-line
|
||||
bindkey "\e[4~" end-of-line
|
||||
bindkey "\e[5~" beginning-of-history
|
||||
bindkey "\e[6~" end-of-history
|
||||
bindkey "\e[3~" delete-char
|
||||
bindkey "\e[2~" quoted-insert
|
||||
bindkey "\e[5C" forward-word
|
||||
bindkey "\eOc" emacs-forward-word
|
||||
bindkey "\e[5D" backward-word
|
||||
bindkey "\eOd" emacs-backward-word
|
||||
bindkey "\ee[C" forward-word
|
||||
bindkey "\ee[D" backward-word
|
||||
bindkey "^H" backward-delete-word
|
||||
# for rxvt
|
||||
bindkey "\e[8~" end-of-line
|
||||
bindkey "\e[7~" beginning-of-line
|
||||
# for non RH/Debian xterm, can't hurt for RH/DEbian xterm
|
||||
bindkey "\eOH" beginning-of-line
|
||||
bindkey "\eOF" end-of-line
|
||||
# for freebsd console
|
||||
bindkey "\e[H" beginning-of-line
|
||||
bindkey "\e[F" end-of-line
|
||||
# completion in the middle of a line
|
||||
bindkey '^i' expand-or-complete-prefix
|
||||
|
||||
export FZF_DEFAULT_OPTS='--height 50% --border'
|
||||
eval "$(fzf --zsh)"
|
||||
464
zsh/zshrc.j2
464
zsh/zshrc.j2
@@ -1,18 +1,10 @@
|
||||
[[ -z "$PS1" ]] && return
|
||||
|
||||
_zshdir="$HOME/.zshrc.d"
|
||||
|
||||
{% if user.gpg_agent %}
|
||||
export GPG_TTY=$(tty)
|
||||
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
|
||||
{% endif %}
|
||||
|
||||
for file in "${_zshdir}"/* ; do
|
||||
if [[ -e "$file" ]] ; then
|
||||
source "$file"
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ -f /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ]] ; then
|
||||
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
||||
elif [[ -f /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ]] ; then
|
||||
@@ -27,3 +19,459 @@ if [[ ! "$SSH_AUTH_SOCK" ]]; then
|
||||
source "$XDG_RUNTIME_DIR/ssh-agent.env" >/dev/null
|
||||
fi
|
||||
{% endif %}
|
||||
|
||||
{% raw %}
|
||||
|
||||
setopt EXTENDED_HISTORY
|
||||
setopt HIST_EXPIRE_DUPS_FIRST
|
||||
setopt HIST_VERIFY
|
||||
setopt INC_APPEND_HISTORY
|
||||
setopt SHARE_HISTORY
|
||||
setopt AUTO_CD
|
||||
setopt APPEND_HISTORY
|
||||
setopt HIST_IGNORE_DUPS
|
||||
setopt NOHIST_IGNORE_ALL_DUPS
|
||||
setopt HIST_IGNORE_SPACE
|
||||
setopt CORRECT
|
||||
setopt RM_STAR_SILENT
|
||||
setopt BG_NICE
|
||||
setopt CHECK_JOBS
|
||||
setopt HUP
|
||||
setopt LONG_LIST_JOBS
|
||||
|
||||
setopt share_history
|
||||
|
||||
bindkey -e
|
||||
|
||||
autoload -U promptinit
|
||||
promptinit
|
||||
|
||||
autoload -U colors
|
||||
colors
|
||||
|
||||
autoload -U compinit
|
||||
compinit
|
||||
zstyle ':completion:*' menu select
|
||||
setopt completealiases
|
||||
|
||||
autoload -U edit-command-line
|
||||
zle -N edit-command-line
|
||||
bindkey '^xe' edit-command-line
|
||||
bindkey '^x^e' edit-command-line
|
||||
|
||||
HISTSIZE=100000
|
||||
SAVEHIST=100000
|
||||
HISTFILE="$HOME/.zsh_history"
|
||||
|
||||
alias vim="nvim"
|
||||
|
||||
### BETTER COMMANDS
|
||||
alias ls="exa --oneline --icons --group-directories-first"
|
||||
alias ll='ls --all --long --classify --group --modified --time-style=long-iso --git'
|
||||
alias la='ls --all'
|
||||
|
||||
alias spm="sudo pacman"
|
||||
|
||||
alias tml="tmux list-sessions"
|
||||
alias tma="tmux ls 2>/dev/null && tmux attach-session || tmux"
|
||||
alias tmn="tmux new-session -A -s"
|
||||
|
||||
alias clipc="xclip -selection primary"
|
||||
alias clipo="xclip -out -selection clipboard"
|
||||
|
||||
alias rgrep="grep -r"
|
||||
|
||||
alias vimrc="vim -c ':e \$MYVIMRC'"
|
||||
alias zshrc="vim -c ':e ~/.zshrc' ; source ~/.zshrc"
|
||||
|
||||
alias calc='python3 -ic "from math import *; import cmath"'
|
||||
|
||||
alias le_haxxor_1='clear && dmesg | pv -qL 20'
|
||||
alias le_haxxor_2='clear && hexdump -C /dev/urandom | pv -qlL 2'
|
||||
|
||||
alias root='sudo -sE'
|
||||
|
||||
### USEFUL DEFAULT OPTIONS
|
||||
alias tmux="tmux -2"
|
||||
|
||||
alias chmod="chmod -c"
|
||||
alias chown="chown -c"
|
||||
|
||||
alias diff="diff --color=auto"
|
||||
|
||||
alias grep='grep --color=auto'
|
||||
alias fgrep='fgrep --color=auto'
|
||||
alias egrep='egrep --color=auto'
|
||||
|
||||
alias rg='rg --hidden --glob "!.git/**"'
|
||||
|
||||
alias rm='rm -v'
|
||||
alias cp='cp -vi'
|
||||
alias mv='mv -vi'
|
||||
alias ln='ln -v'
|
||||
|
||||
alias du='du -h'
|
||||
alias df='df -h'
|
||||
|
||||
### SHORTENING COMMAND NAMES
|
||||
alias cs="cryptsetup"
|
||||
alias v="vim"
|
||||
alias g="git"
|
||||
alias c="cd"
|
||||
alias l="ls"
|
||||
alias s="sudo"
|
||||
alias cl="clear"
|
||||
|
||||
alias nocolor="sed -r \"s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g\""
|
||||
|
||||
alias ip="ip -color"
|
||||
|
||||
alias vimtask="vim -c :TW"
|
||||
|
||||
alias tw="task"
|
||||
alias twl="task list"
|
||||
alias twa="task add"
|
||||
alias twd="task done"
|
||||
alias inbox="task add +inbox"
|
||||
|
||||
alias yaml2json="python3 -c 'import sys, yaml, json; json.dump([d for d in yaml.safe_load_all(sys.stdin)][-1], sys.stdout, indent=4)'"
|
||||
alias json2yaml="python3 -c 'import sys, yaml, json; yaml.safe_dump(json.loads(sys.stdin.read()), stream=sys.stdout)'"
|
||||
|
||||
alias currentbranch='git rev-parse --abbrev-ref HEAD'
|
||||
|
||||
alias issh="ssh -o StrictHostKeyChecking=false -o UserKnownHostsFile=/dev/null"
|
||||
alias gfix='git commit --amend --no-edit'
|
||||
alias gfixa='git commit --amend --no-edit --all '
|
||||
alias gfixp='git commit --amend --no-edit --patch'
|
||||
|
||||
alias issh="ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
|
||||
|
||||
alias newpw="pwgen --secure 25 1"
|
||||
|
||||
alias sys="systemctl"
|
||||
alias sysu="systemctl --user"
|
||||
|
||||
alias gpg=gpg2
|
||||
|
||||
alias alacritty="alacritty --config-file $HOME/.config/alacritty.toml"
|
||||
|
||||
alias d=docker
|
||||
alias dc=docker-compose
|
||||
|
||||
alias hx=helix
|
||||
alias h=helix
|
||||
|
||||
gitmaster() {
|
||||
git stash push -m gitmaster-$(date -uIseconds) -u || return 1
|
||||
_branch=$(git rev-parse --abbrev-ref HEAD)
|
||||
git fe || return 1
|
||||
git checkout master || return 1
|
||||
git merge origin/master || return 1
|
||||
git checkout $_branch
|
||||
git stash pop
|
||||
}
|
||||
|
||||
_remote() {
|
||||
[[ -n "$SSH_CONNECTION" ]]
|
||||
}
|
||||
|
||||
cd() {
|
||||
builtin cd "$@" && ls
|
||||
}
|
||||
|
||||
mount() {
|
||||
if [[ $# == 0 ]] ; then
|
||||
command mount | column -t
|
||||
else
|
||||
command mount "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
extr()
|
||||
{
|
||||
if [[ -f "$1" ]] ; then
|
||||
case "$1" in
|
||||
*.tar.bz2 ) tar xvjf "$1" ;;
|
||||
*.tar.gz ) tar xvzf "$1" ;;
|
||||
*.tar.xz ) tar xvJf "$1" ;;
|
||||
*.bz2 ) bunzip2 "$1" ;;
|
||||
*.rar ) unrar x "$1" ;;
|
||||
*.gz ) gunzip "$1" ;;
|
||||
*.tar ) tar xvf "$1" ;;
|
||||
*.tbz2 ) tar xvjf "$1" ;;
|
||||
*.tgz ) tar xvzf "$1" ;;
|
||||
*.zip ) unzip "$1" ;;
|
||||
*.Z ) uncompress "$1" ;;
|
||||
*.7z ) 7z x "$1" ;;
|
||||
*)
|
||||
echo "$1 cannot be extracted via $0"
|
||||
;;
|
||||
esac
|
||||
else
|
||||
echo "$1 is not a valid file"
|
||||
fi
|
||||
}
|
||||
|
||||
ruler() {
|
||||
for s in '....^....|' '1234567890'; do
|
||||
w=${#s}
|
||||
str=$(for (( i=1; $i<=$(( ($COLUMNS + $w) / $w )) ; i=$i+1 )); do echo -n $s; done )
|
||||
str=$(echo $str | cut -c -$COLUMNS)
|
||||
echo $str
|
||||
done
|
||||
}
|
||||
|
||||
addext() {
|
||||
[[ -z "$1" ]] || [[ -z "$2" ]] && { echo "Usage: $0 <file> <extension>" ; return }
|
||||
mv "$1" "$1$2"
|
||||
}
|
||||
|
||||
rmext() {
|
||||
[[ -e "$1" ]] && mv -i "$1" "${1%.*}"
|
||||
}
|
||||
|
||||
ckwww() {
|
||||
ping -c 3 www.google.com
|
||||
}
|
||||
|
||||
httpcode() {
|
||||
curl http://httpcode.info/$1
|
||||
}
|
||||
|
||||
bak() {
|
||||
if ! [[ "$1" ]] ; then
|
||||
printf '%s\n' "usage: $0 FILE"
|
||||
return 1
|
||||
fi
|
||||
if ! [[ -e "$1" ]] ; then
|
||||
printf '%s\n' "\"$1\" not found"
|
||||
return 1
|
||||
fi
|
||||
name="$1.$(date +%Y%m%d%H%M%S.bak)"
|
||||
if [[ -e "${name}" ]] ; then
|
||||
printf '%s\n' "Backup file \"$name\" already exists"
|
||||
return 1
|
||||
fi
|
||||
cp --archive --verbose --no-clobber "$1" "${name}"
|
||||
}
|
||||
|
||||
fstab() {
|
||||
# yeah
|
||||
expand /etc/fstab | grep -v '^#' | grep -P '^.+$' | tr -s ' ' | tr ' ' '|' | cat <(grep -P '<.+>' /etc/fstab | cut -f 2- -d ' ' | sed 's/>[^<]*</>|</g') - | column -ts '|'
|
||||
}
|
||||
|
||||
serve() {
|
||||
python3 -m http.server 8800
|
||||
}
|
||||
|
||||
manpdf() {
|
||||
[[ -z "$1" ]] && { printf '%s' >&2 "$(man)" ; return ; }
|
||||
man -t "$1" | ps2pdf - - | zathura -
|
||||
}
|
||||
|
||||
myip4() {
|
||||
curl "http://ipv4.icanhazip.com"
|
||||
}
|
||||
|
||||
myip6() {
|
||||
curl "http://ipv6.icanhazip.com" 2>/dev/null || echo "no ip6"
|
||||
}
|
||||
|
||||
diffdir() {
|
||||
[[ "$1" ]] && [[ "$2" ]] || { echo "$0 <dir1> <dir2>" ; return 1 ; }
|
||||
diff <(cd "$1" && find -type f -exec md5sum {} \;) <(cd "$2" && find -type f -exec md5sum {} \;)
|
||||
}
|
||||
|
||||
diffdir2() {
|
||||
[[ "$1" ]] && [[ "$2" ]] || { echo "$0 <dir1> <dir2>" ; return 1 ; }
|
||||
comm -13 <(cd "$1" && find -type f | sort -g) <(cd "$2" && find -type f | sort -g)
|
||||
}
|
||||
|
||||
man() {
|
||||
env LESS_TERMCAP_mb=$'\E[01;31m' \
|
||||
LESS_TERMCAP_md=$'\E[01;38;5;74m' \
|
||||
LESS_TERMCAP_me=$'\E[0m' \
|
||||
LESS_TERMCAP_se=$'\E[0m' \
|
||||
LESS_TERMCAP_so=$'\E[38;5;246m' \
|
||||
LESS_TERMCAP_ue=$'\E[0m' \
|
||||
LESS_TERMCAP_us=$'\E[04;38;5;146m' \
|
||||
man "$@"
|
||||
}
|
||||
|
||||
resolvecd() {
|
||||
cd "$(readlink -f $(pwd))"
|
||||
}
|
||||
|
||||
ssht () {
|
||||
ssh -t $@ "tmux a || tmux";
|
||||
}
|
||||
|
||||
t() {
|
||||
if [[ "$1" ]] ; then
|
||||
tmux new-session -A -s "$1"
|
||||
else
|
||||
tmux attach-session
|
||||
fi
|
||||
}
|
||||
|
||||
sb() {
|
||||
echo $(( $1 * $(cat /sys/class/backlight/intel_backlight/max_brightness) / 100)) | sudo tee /sys/class/backlight/intel_backlight/brightness
|
||||
}
|
||||
|
||||
clip() {
|
||||
tee >(xclip -selection clipboard) | tee >(xclip -selection primary)
|
||||
}
|
||||
|
||||
gb() {
|
||||
_superproject="$(git rev-parse --show-superproject-working-tree)"
|
||||
_root="$(git rev-parse --show-toplevel)"
|
||||
if [[ -n "${_superproject}" ]] ; then
|
||||
if [[ "$(pwd)" == "${_root}" ]] ; then
|
||||
builtin cd "${_superproject}"
|
||||
else
|
||||
builtin cd "${_root}"
|
||||
fi
|
||||
else
|
||||
builtin cd "${_root}"
|
||||
fi
|
||||
}
|
||||
|
||||
bm() {
|
||||
case "$1" in
|
||||
dev)
|
||||
cd "$HOME/development/projects"
|
||||
;;
|
||||
dot)
|
||||
cd "$HOME/dotfiles"
|
||||
;;
|
||||
*)
|
||||
echo "unknown target"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
embiggen() {
|
||||
enscript --no-header --media=A4 --landscape --font="DejaVuSansMono30" -o - 2>/dev/null | ps2pdf - | zathura -
|
||||
}
|
||||
|
||||
journal() {
|
||||
journaldir=~/sync/journal/
|
||||
file="$journaldir/$(date +%Y-%m-%d).md"
|
||||
if [[ ! -e $file ]] ; then
|
||||
cp $journaldir/template.md $file || return
|
||||
fi
|
||||
$EDITOR $file
|
||||
}
|
||||
|
||||
prefix() {
|
||||
prefix=$2
|
||||
file=$1
|
||||
mv $file ${prefix}${file}
|
||||
}
|
||||
|
||||
tmp() {
|
||||
cd "$(mktemp -d)"
|
||||
}
|
||||
|
||||
autoload -Uz vcs_info
|
||||
|
||||
_vcsbase="%{$fg[red]%}[%r] %{$fg[blue]%}[%{%B%}%b%{$fg[red]%}%m%{$fg[blue]%}] %{$fg[red]%}%{%B%}%c%u"
|
||||
|
||||
zstyle ':vcs_info:*' stagedstr 'I'
|
||||
zstyle ':vcs_info:*' unstagedstr 'M'
|
||||
|
||||
zstyle ':vcs_info:*' enable git
|
||||
zstyle ':vcs_info:*' check-for-changes true
|
||||
zstyle ':vcs_info:*' get-revision true
|
||||
|
||||
zstyle ':vcs_info:git*' formats "$_vcsbase"
|
||||
zstyle ':vcs_info:git*' actionformats "%{$fg[red]%}(%a) $_vcsbase"
|
||||
|
||||
zstyle ':vcs_info:git*+set-message:*' hooks git-untracked git-st git-remotebranch
|
||||
|
||||
+vi-git-untracked() {
|
||||
if [[ $(git rev-parse --is-inside-work-tree 2> /dev/null) == 'true' ]] && \
|
||||
[[ $(git ls-files --other --directory --exclude-standard | sed q | wc -l | tr -d ' ') == 1 ]] ; then
|
||||
hook_com[unstaged]+='?%f'
|
||||
fi
|
||||
}
|
||||
|
||||
+vi-git-st() {
|
||||
local ahead behind
|
||||
local -a gitstatus
|
||||
|
||||
ahead=$(git rev-list ${hook_com[branch]}@{upstream}..HEAD 2>/dev/null | wc -l)
|
||||
(( $ahead )) && gitstatus+=( "+${ahead}" )
|
||||
|
||||
behind=$(git rev-list HEAD..${hook_com[branch]}@{upstream} 2>/dev/null | wc -l)
|
||||
(( $behind )) && gitstatus+=( "-${behind}" )
|
||||
|
||||
hook_com[misc]+=${(j:/:)gitstatus}
|
||||
}
|
||||
|
||||
+vi-git-remotebranch() {
|
||||
local remote
|
||||
|
||||
remote=${$(git rev-parse --verify ${hook_com[branch]}@{upstream} \
|
||||
--symbolic-full-name 2>/dev/null)/refs\/remotes\/}
|
||||
|
||||
if [[ -n ${remote} ]] ; then
|
||||
hook_com[branch]="${hook_com[branch]} %b%{$fg[magenta]%}<${remote}>"
|
||||
fi
|
||||
}
|
||||
|
||||
precmd() {
|
||||
vcs_info
|
||||
}
|
||||
|
||||
autoload -Uz vcs_info
|
||||
zstyle ':vcs_info:*' enable git hg
|
||||
zstyle ':vcs_info:*' check-for-changes true
|
||||
|
||||
zstyle ':vcs_info:git*' formats "%{${fg[cyan]}%}[%{${fg[green]}%}%s%{${fg[cyan]}%}][%{${fg[blue]}%}%r/%S%%{${fg[cyan]}%}][%{${fg[blue]}%}%b%{${fg[yellow]}%}%m%u%c%{${fg[cyan]}%}]%{$reset_color%}"
|
||||
|
||||
_topstr='%{$fg[green]%}%n@%m%{$fg[white]%} ─ %{%B$fg[yellow]%}%~%{%b%} ${vcs_info_msg_0_}%{$fg[white]%} '
|
||||
botstr='%B${PINFO}%#%b '
|
||||
|
||||
if _remote ; then
|
||||
_topstr="%{$fg[red]%}[remote]%{$fg[white]%} ${_topstr}"
|
||||
fi
|
||||
|
||||
setopt prompt_subst
|
||||
|
||||
|
||||
PROMPT='%{$fg[white]%}┌─ '"${_topstr}"'
|
||||
└─ '"${botstr}"
|
||||
RPROMPT="%{$fg[cyan]%}%*%{$fg[white]%} ─ [%?]"
|
||||
|
||||
autoload zkbd
|
||||
|
||||
bindkey "\e[1~" beginning-of-line
|
||||
bindkey "\e[4~" end-of-line
|
||||
bindkey "\e[5~" beginning-of-history
|
||||
bindkey "\e[6~" end-of-history
|
||||
bindkey "\e[3~" delete-char
|
||||
bindkey "\e[2~" quoted-insert
|
||||
bindkey "\e[5C" forward-word
|
||||
bindkey "\eOc" emacs-forward-word
|
||||
bindkey "\e[5D" backward-word
|
||||
bindkey "\eOd" emacs-backward-word
|
||||
bindkey "\ee[C" forward-word
|
||||
bindkey "\ee[D" backward-word
|
||||
bindkey "^H" backward-delete-word
|
||||
# for rxvt
|
||||
bindkey "\e[8~" end-of-line
|
||||
bindkey "\e[7~" beginning-of-line
|
||||
# for non RH/Debian xterm, can't hurt for RH/DEbian xterm
|
||||
bindkey "\eOH" beginning-of-line
|
||||
bindkey "\eOF" end-of-line
|
||||
# for freebsd console
|
||||
bindkey "\e[H" beginning-of-line
|
||||
bindkey "\e[F" end-of-line
|
||||
# completion in the middle of a line
|
||||
bindkey '^i' expand-or-complete-prefix
|
||||
|
||||
export FZF_DEFAULT_OPTS='--height 50% --border'
|
||||
eval "$(fzf --zsh)"
|
||||
|
||||
{% endraw %}
|
||||
|
||||
Reference in New Issue
Block a user