127 lines
3.0 KiB
Bash
Executable File
127 lines
3.0 KiB
Bash
Executable File
#!/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=$(readlink -f $2)
|
|
[ ! -d "$(basename $to)" ] && mkdir "$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
|
|
}
|
|
}
|