#!/usr/bin/env sh # Description: Show diff of 2 directories or multiple files in vimdiff # # Shell: POSIX compliant # Author: Arun Prakash Jana selection=~/.config/nnn/.selection if [ -s $selection ]; then arr=$(tr '\0' '\n' < "$selection") if [ "$(echo "$arr" | wc -l)" -gt 1 ]; then f1="$(echo "$arr" | sed -n '1p')" f2="$(echo "$arr" | sed -n '2p')" if [ -d "$f1" ] && [ -d "$f2" ]; then dir1=$(mktemp "${TMPDIR:-/tmp}"/nnn-$(basename "$f1").XXXXXXXX) dir2=$(mktemp "${TMPDIR:-/tmp}"/nnn-$(basename "$f2").XXXXXXXX) ls -A1 "$f1" > "$dir1" ls -A1 "$f2" > "$dir2" vimdiff "$dir1" "$dir2" rm "$dir1" "$dir2" else cat $selection | xargs -0 vimdiff fi else echo "needs at least 2 files or directories selected for comparison" fi fi