diff options
| author | Mahdi Nayef <mhdna@outlook.com> | 2023-05-27 01:08:43 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-26 22:08:43 +0000 |
| commit | 1633233c9d8df7d5e4c53c078addcbfced017ae1 (patch) | |
| tree | eb4b834c10a5b17c6177629a9bfd312e257f4892 /.config/lf | |
| parent | ce1f0bfa0597881a640ef32b5334087425d65d16 (diff) | |
| download | eibhear-1633233c9d8df7d5e4c53c078addcbfced017ae1.tar.gz eibhear-1633233c9d8df7d5e4c53c078addcbfced017ae1.tar.zst eibhear-1633233c9d8df7d5e4c53c078addcbfced017ae1.zip | |
bulkrename using built-ins instead of using a completely separate program (#1330)
* bulkrename using bult-ins instead of using a completely separate program
* Make it more efficient
Diffstat (limited to '.config/lf')
| -rw-r--r-- | .config/lf/lfrc | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/.config/lf/lfrc b/.config/lf/lfrc index d1c9402..25fb3d1 100644 --- a/.config/lf/lfrc +++ b/.config/lf/lfrc @@ -93,7 +93,27 @@ cmd copyto ${{ }} cmd setbg "$1" -cmd bulkrename $vidir + +cmd bulkrename ${{ + tmpfile_old="$(mktemp)" + tmpfile_new="$(mktemp)" + + [ -n "$fs" ] && fs=$(basename -a $fs) || fs=$(ls) + + echo "$fs" > "$tmpfile_old" + echo "$fs" > "$tmpfile_new" + $EDITOR "$tmpfile_new" + + [ "$(wc -l < "$tmpfile_old")" -eq "$(wc -l < "$tmpfile_new")" ] || { rm -f "$tmpfile_old" "$tmpfile_new"; exit 1; } + + paste "$tmpfile_old" "$tmpfile_new" | while IFS="$(printf '\t')" read -r src dst + do + [ "$src" = "$dst" ] || [ -e "$dst" ] || mv -- "$src" "$dst" + done + + rm -f "$tmpfile_old" "$tmpfile_new" + lf -remote "send $id unselect" +}} # Bindings map <c-f> $lf -remote "send $id select \"$(fzf)\"" |
