zsh/aliases/yank-paste
2023-08-21 11:46:14 +02:00

71 lines
1.2 KiB
Bash
Executable file

typeset -a __yank_buffer __cut_buffer
fyank() {
__yank_buffer=()
for i in "$@"; do
__yank_buffer+=("${i:a}")
done
}
fcut() {
__cut_buffer=()
for i in "$@"; do
__cut_buffer+=("${i:a}")
done
}
fyankadd() {
for i in "$@"; do
__yank_buffer+=("${i:a}")
done
}
fcutadd() {
for i in "$@"; do
__cut_buffer+=("${i:a}")
done
}
fpasteclear() {
__yank_buffer=()
__cut_buffer=()
}
fpastelist() {
if [[ -n $__yank_buffer ]]; then
echo "Copying ${#__yank_buffer[@]} files:"
printf " %s\n" ${__yank_buffer[@]}
fi
if [[ -n $__cut_buffer ]]; then
echo "Moving ${#__cut_buffer[@]} files"
printf " %s\n" ${__cut_buffer[@]}
fi
}
fpaste() {
if [[ -n $__yank_buffer ]]; then
echo "Copying ${#__yank_buffer[@]} files"
fi
if [[ -n $__cut_buffer ]]; then
echo "Moving ${#__cut_buffer[@]} files"
fi
if [[ -n $__cut_buffer || -n $__yank_buffer ]]; then
echo -n "Continue? [y/N] "
read -q || return
else
echo "Error: No files to paste. Use fyank or fcut first"
return 1
fi
local target=${1:-$PWD}
for file in "${__yank_buffer[@]}"; do
cp -r "$file" "$target"
done
for file in "${__cut_buffer[@]}"; do
mv "$file" "$target"
done
fpasteclear
}
# vim: set ft=zsh: