I just gave a talk on screen. I walked through integration with bash, vim, and mutt. For bash, I wanted the name of the box I ssh'd to show up in my hardtitle not that I'd ssh'd there.
screen_resume() { prompt_network 'stop' exec ssh-agent -a ${SSH_AUTH_SOCK} screen -R } screen_show_in_shelltitle() { printf "\ek$*\e\134" } screen_run() { # pretty print $1 as needed if [[ ! -z "$STY" ]]; then string_to_show=$(echo $1 | sed -e 's/\..*//' ) screen_show_in_shelltitle ${string_to_show} fi shift command $* } ssh() { screen_run $1 ssh $@ ; } telnet() { screen_run $1 telnet $@ ; } exec() { screen_run $1 exec $@ ; } sudo() { screen_run $1 sudo $@ ; }
When setting up your bash prompt, don't actually put the screen escape codes in your PS1 as bash/readline can get confused about how many characters are on the screen and your readline will mangle multi-line commands, so just print them to stdout.
For vim, I just followed up with screen -X readbuf some_file and screen -X paste . for VimREPL
Mutt just needs a new editor, the following script:
#!/bin/sh screen -X select vim vim --servername local --remote-wait "$1" screen -X select mutt
Just name your vim and mutt sessions accordingly, and start your vim up with vim --servername local.
Did I miss a cool use of vim? Let me know....