The problem was that konsole was pretending to be xterm, and confused vim. That "115;0c" was intended (by konsole's developer) to look like the response to xterm's secondary device response. In particular, konsole was pretending to be xterm patch #115, by sending this response:
Escape[
1
;
1
1
5
;
0
c
konsole, like all of the xterm-wannbes, differs from xterm in ways that affect any application using terminfo (this is of course an FAQ).
The actual code:
void Vt102Emulation::reportSecondaryAttributes()
{
// Secondary device attribute response (Request was: ^[[>0c or ^[[>c)
if (getMode(MODE_Ansi)) {
sendString("\033[>1;115;0c"); // Why 115? ;)
} else {
sendString("\033/Z"); // FIXME I don't think VT52 knows about it but kept for
}
// konsoles backward compatibility.
}
dates back to this commit:
commit 2d93fed82aa27e89c9d7301d09d2e24e4fa4416d
Author: Waldo Bastian <bastian@kde.org>
Date: Sat Sep 15 21:21:44 2001 +0000
proper impl. of primary/secondary device attributes (DA)
Patch by Achim Bohnet <ach@mpe.mpg.de>
svn path=/trunk/kdebase/konsole/; revision=114396
diff --git a/konsole/TEmuVt102.cpp b/konsole/TEmuVt102.cp
There is a "konsole" entry in the optional ncurses-term package (see source). That requires a few megabytes. The required ncurses-base package is much smaller:
This package contains terminfo data files to support the most common types of terminal, including ansi, dumb, linux, rxvt, screen, sun, vt100, vt102, vt220, vt52, and xterm.
which is a little odd, because very few people have actually used ansi, sun, or vt52 within the past 20 years, except by accident or when following poor advice.