() { # set EDITOR/VISUAL variables [[ ${#PREFERRED_EDITORS[@]} -eq 0 ]] && { echo 'unable to find $PREFERRED_EDITORS environment variable' return 1 } local PROGRAM PROGRAM_EXECUTABLE for PROGRAM in ${PREFERRED_EDITORS[@]} do PROGRAM_EXECUTABLE="$(which $PROGRAM 2>/dev/null)" [ -f "$PROGRAM_EXECUTABLE" ] \ && export EDITOR="$PROGRAM_EXECUTABLE" \ && export VISUAL="$PROGRAM_EXECUTABLE" \ && break done }