I have a 256 colour xterm set up on my DragonFly box.
Works perfectly. Especially for vim.
Now, I use FreeBSD 5.x as a gateway box to ssh into and have irssi and
likewise programs screened.
Now, I was surprised to learn that I had only 16 colours. Outside of screen I
had a full 256 colour palette (make sure to fix your PuTTY configuration by
the way), but inside I was stripped of my colour scheme.
So I set off to find what was causing this. Interestingly enough one of the
first emails encountered was from Jeremy Chadwick who had the exact same
problem.
Turns out that screen needs to be compiled with 256 colour support (a knob
should be in your ports Makefile now).
Since FreeBSD's and DragonFly's termcap is bereft of any 256 colour
definitions for xterm apparently, you need to add the following to
$HOME/.screenrc:
termcap xterm* 'Co#256:AB=E[48;5;%dm:AF=E[38;5;%dm'
terminfo xterm* 'Co#256:AB=E[48;5;%p1%dm:AF=E[38;5;%p1%dm'
This overrides your termcap settings with the appropriate definitions.
If you now start screen from a shell that has TERM exported as xterm or xterm-color (xterm* wildcard actually) it will fork off to a screen with 256 colour support.
You might need this in $HOME/.vimrc:
if &term =~ "xterm" || &term =~ "screen"
set t_Co=256
if has("terminfo")
let &t_Sf=nr2char(27).'[3%p1%dm'
let &t_Sb=nr2char(27).'[4%p1%dm'
else
let &t_Sf=nr2char(27).'[3%dm'
let &t_Sb=nr2char(27).'[4%dm'
endif
endif