I found that if I export TERM=vt220 that most keys do work
If you start an xterm(1) and find TERM is `xterm' then I'd leave it alone.
My TERM reports as Linux. Should I export it as xterm?
Terminal database (terminfo (5) or termcap (5)) entries that work with xterm include
an optional platform-specific entry (“xterm”), “xterm”, “vt102”, “vt100”, “ansi” and “dumb”
Xterm automatically searches the terminal database in this order for these entries and then sets the “TERM” variable (and the “TERMCAP” environment variable on a few older systems). The alternatives after “xterm” are very old, from the late 1980s.
So presumably something in your set up, e.g. .bash_profile, is setting it to ‘Linux’. Yes, set it to ‘xterm’.
I'd also expect you to have /usr/share/terminfo/x/xterm-256color that means it can alternatively be set to ‘xterm-256color’.