Картографирование Esc всегда немного сложнее и, как правило, создает проблемы такого рода, даже если это не должно происходить.
"Канонический" метод для вашего отображения:
nnoremap <silent> <C-l> :nohlsearch<CR><C-l>
Таким образом, Ctrl+L (который обычно перерисовывает ваш экран) перестанет выделять и перерисовывать экран.
Я думаю, что выяснил, что происходит, но у меня все еще нет решения. Я предполагал, что Vim получил строку, содержащую <ESC>
и "2c", поэтому я использовал следующее отображение, чтобы сделать его видимым:
nnoremap <Esc> :"
Это привело к следующей подсказке при запуске:
:"[>0;261;0c
Что означает, что что-то отправлено <ESC>[>0;261;0c
при запуске. Теперь, просматривая оригинальные управляющие последовательности xterm
, мы находим, что:
ESC [ Control Sequence Introducer (CSI is 0x9b)
а также
CSI> P s c
Отправить атрибуты устройства (вторичный DA).
P s = 0 или опущено → запросить идентификационный код терминала. Ответ зависит от настройки ресурса decTerminalID . Он должен применяться только к VT220 и выше, но xterm расширяет это до VT100.
→ CSI> P p ; P v ; P cc
где P p обозначает тип терминала
P p = 0 → '' VT100 ''.
P p = 1 → '' VT220 ''.
и P v - версия прошивки (для xterm это был первоначально номер патча XFree86, начиная с 95). В терминале DEC P c указывает регистрационный номер картриджа ПЗУ и всегда равен нулю.
Так что в моем случае что-то отправляет CSI >
с P p = 0 (→ тип терминала VT100), P v = 261 (→ моя версия xterm
) и P c = 0.
Тем не менее, я понятия не имею, откуда оно или как его остановить. Мое предположение заключается в том, что некоторый обмен информацией между терминалом и Vim не выполняется, и что-то происходит с ошибками.