mirror of
https://github.com/Llewellynvdm/fzf.git
synced 2024-11-30 00:33:56 +00:00
79 lines
1.7 KiB
Bash
Executable File
79 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
confirm() {
|
|
while [ 1 ]; do
|
|
read -p "$1" -n 1 -r
|
|
echo
|
|
if [[ "$REPLY" =~ ^[Yy] ]]; then
|
|
return 0
|
|
elif [[ "$REPLY" =~ ^[Nn] ]]; then
|
|
return 1
|
|
fi
|
|
done
|
|
}
|
|
|
|
remove() {
|
|
echo "Remove $1"
|
|
rm -f "$1"
|
|
}
|
|
|
|
remove_line() {
|
|
src=$(readlink "$1")
|
|
if [ $? -eq 0 ]; then
|
|
echo "Remove from $1 ($src):"
|
|
else
|
|
src=$1
|
|
echo "Remove from $1:"
|
|
fi
|
|
|
|
shift
|
|
line_no=1
|
|
match=0
|
|
while [ -n "$1" ]; do
|
|
line=$(sed -n "$line_no,\$p" "$src" | \grep -m1 -nF "$1")
|
|
if [ $? -ne 0 ]; then
|
|
shift
|
|
line_no=1
|
|
continue
|
|
fi
|
|
line_no=$(( $(sed 's/:.*//' <<< "$line") + line_no - 1 ))
|
|
content=$(sed 's/^[0-9]*://' <<< "$line")
|
|
match=1
|
|
echo " - Line #$line_no: $content"
|
|
[ "$content" = "$1" ] || confirm " - Remove (y/n) ? "
|
|
if [ $? -eq 0 ]; then
|
|
awk -v n=$line_no 'NR == n {next} {print}' "$src" > "$src.bak" &&
|
|
mv "$src.bak" "$src" || break
|
|
echo " - Removed"
|
|
else
|
|
echo " - Skipped"
|
|
line_no=$(( line_no + 1 ))
|
|
fi
|
|
done
|
|
[ $match -eq 0 ] && echo " - Nothing found"
|
|
echo
|
|
}
|
|
|
|
for shell in bash zsh; do
|
|
remove ~/.fzf.${shell}
|
|
remove_line ~/.${shell}rc \
|
|
"[ -f ~/.fzf.${shell} ] && source ~/.fzf.${shell}" \
|
|
"source ~/.fzf.${shell}"
|
|
done
|
|
|
|
bind_file=~/.config/fish/functions/fish_user_key_bindings.fish
|
|
if [ -f "$bind_file" ]; then
|
|
remove_line "$bind_file" "fzf_key_bindings"
|
|
fi
|
|
|
|
if [ -d ~/.config/fish/functions ]; then
|
|
remove ~/.config/fish/functions/fzf.fish
|
|
|
|
if [ "$(ls -A ~/.config/fish/functions)" ]; then
|
|
echo "Can't delete non-empty directory: \"~/.config/fish/functions\""
|
|
else
|
|
rmdir ~/.config/fish/functions
|
|
fi
|
|
fi
|
|
|