-blank=$(echo $info | sed 's/./ /g')
-export PROMPT_COMMAND="echo -ne '\033]0;$info\007\r$blank\r'"
-unset info blank SSH_FORWARDED
+
+# Check for vim.
+vimchild=" [vim]"
+if ps -o comm= -p $PPID 2>/dev/null | grep '^vim*$' &>/dev/null; then
+ # Clear [vim] when exiting.
+ trap "echo -ne '\\033]0;$info\\033\\0134'" exit
+ info="$info$vimchild"
+fi
+if [ "${TERM##screen}" = "$TERM" ]; then
+ export PROMPT_COMMAND="echo -ne '\033]0;$info\033\0134\r\033[K'"
+else
+ export PROMPT_COMMAND='echo -ne "\033k\033\0134"'
+fi
+unset blank info vimchild SSH_FORWARDED
+
+# Actual dtterm barfs on escape sequences.
+if [ "$TERMINAL_EMULATOR" = "dtterm" ]; then
+ unset PROMPT_COMMAND
+fi
+
+# As does screen on an ancient Solaris host.
+if [ -n "$OLDSOLARIS" -a ! "${TERM##screen}" = "$TERM" ]; then
+ unset PROMPT_COMMAND
+fi