Несмотря на то, что следовал всем советам в этом (и других, похожих) вопросах, я в конце концов обнаружил, что моя проблема в забытой части vimrc, который я взял где-то в Интернете несколько лет назад (потому что он был довольно хорошо организован), затем сильно изменены для моих собственных целей.
Но проблемная область была в небольшой группе настроек, которые я никогда не трогал, в исходном файле, с которого я начал. Соответствующий бит .vimrc был:
" GVIM- (here instead of .gvimrc)
if has('gui_running')
set guioptions-=T " remove the toolbar
set lines=40 " 40 lines of text instead of 24,
else
set term=builtin_ansi " Make arrow and other keys work
endif
Неудивительно (ретроспективно), что эта строка «set term» сбрасывает вещи, так что независимо от того, какой тип ваш терминал сообщает в переменной среды TERM, вы получаете общий 8-цветный терминал ANSI. Задавать 'term' в явном виде внутри .vimrc, вероятно, очень плохая идея, точно так же, как и установка t_Co напрямую.
Я удалил весь этот блок (и поместил настройки gvim в .gvimrc, где они находятся), и с тех пор у меня все работает правильно.