I work at a place where I can't install anything onto my workstation or download anything from the internet onto it. Right now I have to do a significant portion of my work through a very clogged high-latency link. It can take minutes to open a graphical window, so I do whatever editing I'm forced to do through the link in vi. One problem I've been having is if there are 7 compiler errors caused by typos and simple things, I can't fix them all without recompiling. I vi the file and fix one or two errors, and then when I come back the error messages are obliterated by the residual text from vi.
A coworker suggested screen yesterday, which repaints the compiler errors when I exit vi. It also handles terminal resizing properly, which is quite nice.
Problem is, if I run vi through screen on the other side of this link, any mistake I make leads to a 'visual bell'-my whole screen flashes white. It's not unusual for me to press delete and hold, if I want to delete everything on the line but not the line itself. Or hold the left arrow key, etc. Because of the latency of the link, it's hard to judge when to let go, because my screen is 2 seconds behind the keyboard commands. If I hit left arrow or delete when at the start of the line, I get the vbell. If I was holding left arrow or delete and didn't let go fast enough, my screen lights up the room like it's determined to give me an epileptic fit.
I turned off visual bells in screen, and I used the noerrorbells option in vi, but I still get visual bells not related to errors, I guess? The triggers above still flash the screen. These versions of vi don't accept set _vb or set t_vb commands, so any solution involving those doesn't work. Turning off visual bells on the X server didn't work, and xterm doesn't seem to have an option for removing visual bells. The bells don't happen except when I'm using screen... is there any way I can take away vi's ability to visual bell that I haven't tried here?
tl;dr: Screen lets an old version of vi use visual bells when raw xterm or gnome terminal doesn't. Screen is really helpful for other reasons, but these bells are a dealbreaker. Any way to stop vi from being able to use virtual bells?