#!/usr/bin/env sh # Pick a recently-edited file from vim's :oldfiles, open in st -e vim. set -eu VIMINFO="${VIMINFO:-$HOME/.vim/.viminfo}" file=$( vim -e -c "rviminfo! $VIMINFO" \ -c 'redir >> /dev/stdout | silent oldfiles | redir END | qa!' \ 2>/dev/null \ | sed 's/^[[:space:]]*[0-9]*:[[:space:]]*//' \ | sed "s|^~|$HOME|" \ | awk 'NF && !seen[$0]++' \ | while IFS= read -r f; do [ -f "$f" ] && printf '%s\n' "$f"; done \ | dmenu -l 20 -i -p 'recent:' ) || exit 0 [ -n "$file" ] || exit 0 exec st -e vim "$file"