Files
scripts_arch/fzf_listoldfiles.sh
2025-12-20 00:03:46 +01:00

30 lines
900 B
Bash
Executable File

#!/bin/bash
# Script to list recent files and open nvim using fzf
# set to an alias nlof in .zshrc
list_oldfiles() {
# Get the oldfiles list from Neovim
local oldfiles=($(nvim -u NONE --headless +'lua io.write(table.concat(vim.v.oldfiles, "\n") .. "\n")' +qa))
# Filter invalid paths or files not found
local valid_files=()
for file in "${oldfiles[@]}"; do
if [[ -f "$file" ]]; then
valid_files+=("$file")
fi
done
# Use fzf to select from valid files
local files=($(printf "%s\n" "${valid_files[@]}" | \
grep -v '\[.*' | \
fzf --multi \
--preview 'bat -n --color=always --line-range=:500 {} 2>/dev/null || echo "Error previewing file"' \
--height=70% \
--layout=default))
# Open selected files in Neovim
[[ ${#files[@]} -gt 0 ]] && nvim "${files[@]}"
}
# Call the function
list_oldfiles "$@"