On Mon, Oct 29, 2018 at 7:37 AM Ilkka Virta <itvi...@iki.fi> wrote: > > prompt_to_bol() { local pos; printf '\e[6n'; read -sdR pos; > [[ ${pos#*;} != 1 ]] && printf '\e[30;47m%%\n\e[0m'; } > PROMPT_COMMAND=prompt_to_bol > > (I stole the main parts from the answers in > https://unix.stackexchange.com/q/88296/170373 )
Another solution I use is to emulate ZSH's behavior, which places a '%' in reverse video if the previous command ended in a newline, # Can return $ps1 by printing our using this function in # PROMPT_COMMAND, or some other means. _zsh_prompt_nl() { local line_pos col_pos IFS=';[' read -s -t1 -d'R' -p $'\033[6n' _ line_pos col_pos if (( col_pos != 1 )); then (( LINES != line_pos )) ps1="${reset/\[0/[7}%${reset}\n${ps1}\n" else ps1="${ps1}\n" fi } Updating LINES and COLUMN non-interactively can be difficult, so obtaining these values manually may be required: IFS='[;' \ read -rsu2 -d'R' -p $'\033[s\033[9999;9999H\033[6n\033[u' \ _ LINES COLUMNS