30 lines
900 B
Bash
Executable File
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 "$@"
|