#!/bin/sh # Cd into a directory using fzf fcd () { dir=$(fd -a --type d --hidden --exclude ".git|.github" --color=never | fzf --prompt "Choose directory: ") [ -z $dir ] && return 1 cd $dir } # Cd into specific repo fr () { dir=$(fd . ~/repos --maxdepth 1 -a --type d --hidden --exclude ".git|.github" --color=never | fzf --prompt "Choose directory: ") [ -z $dir ] && return 1 cd $dir } # Remove choosed stuff frm () { remove=$(fd --hidden --maxdepth 1 --color=never | fzf -m --prompt "Choose to delete: ") [ -z $remove ] && return 1 rm -rf $(printf '%s' $remove) } # Quicly choose stuff to add using fzf fga () { git add $(git status -s | awk '{ print $2 }' | fzf -m) } # Open a script in path with vim quicly vish () { nvim $(which $1) } # Create a directory and change into it md () { mkdir -p "$@" && cd "$@" } # Move a file and create a link in it's place mvln () { from=$(readlink -f $1) to="$2" [ ! -d "$(dirname $to)" ] && mkdir "$(dirname $to)" mv $from $to ln -s $to $from } # Find my script and let me edit them se() { fd . ~/bin -L --type f --color=never | fzf --prompt "Choose script to edit: " \ --preview 'bat --color=always --style=plain --pager=never {}' | xargs -r $EDITOR } # List my config and open the dir in a editor ce() { current=$(pwd) dir=$(fd . ~/.config -L --maxdepth 1 --color=never | fzf --prompt \ "Choose config to edit: " --preview 'tree -a -C {}') [ "$dir" = "" ] && return cd "$dir" && nvim . cd "$current" } # List files in a directory and edit choosen one vf(){ fd -L --maxdepth 1 --type f --color=never --hidden | fzf --prompt "Choose file to edit: " \ --preview 'bat --color=always --style=plain --pager=never {}' | xargs -r $EDITOR } # history search h() { print -z $( ([ -n "$ZSH_NAME" ] && fc -l 1 || history) | fzf +s --tac | sed -E 's/ *[0-9]*\*? *//' | sed -E 's/\\/\\\\/g') } # Copy current working directory cpdir() { pwd | tr -d "\r\n" | xclip -sel c } # Copy content of a file. cf() { cat $1 | xclip -sel c } # Open a bookmark from buku in browser fb() { buku --nostdin -p -f5 | fzf | cut -f1 | xargs -r buku --nostdin -o } # Extract all archive in current path and remove the archive erm() { for file in *.zip; do printf '%s\n' "Extracting $file" unzip $file rm -f $file printf '%s\n' "" done } # Check use flags of package in world u() { cat /var/lib/portage/world | fzf --prompt "Choose package to uninstall: " --preview "equery u {}" --multi } # Check dependencies of packages in world d() { cat /var/lib/portage/world | fzf --prompt "Choose package to uninstall: " --preview "emerge -pqe {}" } n () { # Block nesting of nnn in subshells [ "${NNNLVL:-0}" -eq 0 ] || { echo "nnn is already running" return } # Tempfile location export NNN_TMPFILE="${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.lastd" nnn "$@" [ ! -f "$NNN_TMPFILE" ] || { . "$NNN_TMPFILE" rm -f "$NNN_TMPFILE" > /dev/null } } upfast () { curl -F "file=@$(readlink -f $1)" "https://upfast.cronyakatsuki.xyz/" } # mblaze functions # Get new mail for current profile mnew () { maildir=$(grep "^Maildir:" $HOME/.mblaze/profile | cut -d: -f 2 | sed 's/ //g') profile=$(basename $maildir) if [ "$profile" = "local" ]; then mlist -s "$maildir"| msort -dr | mseq -S else mbsync -V $profile mlist -s "$maildir"/INBOX | msort -dr | mseq -S fi } # Get full mail for current profile including threads mall () { maildir=$(grep "^Maildir:" $HOME/.mblaze/profile | cut -d: -f 2 | sed 's/ //g') sent=$(grep "^Outbox:" $HOME/.mblaze/profile | cut -d: -f 2 | sed 's/ //g') profile=$(basename $maildir) if [ "$profile" = "local" ]; then mlist "$maildir" | mthread -r -S "$maildir" | mseq -S else mbsync -V $profile mlist "$maildir"/INBOX | mthread -r -S "$sent" | mseq -S fi }