У меня есть следующая строка в моем .vimrc
:
nnoremap <Esc> :noh<Cr>
Это хорошо работает в MacVim. Каждый раз, когда я открываю сам Vim, его "линейка команд" начинается с:
.2c
Если это имеет значение, когда входят для выполнения команды, Vim жалуется с E16: Invalid range
.
Это - незначительное раздражение, но как я решаю этот вопрос?
Отображение 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 c c
где P p обозначает терминальный тип
P p = 0 → ‘‘VT100’’.
P p = 1 → ‘‘VT220’’.и P v является версией микропрограммного обеспечения (для xterm, это было первоначально числом патча XFree86, начиная с 95). В терминале DEC P c указывает на регистрационный номер картриджа ROM и всегда является нулем.
Таким образом в моем случае что-то отправляет CSI >
с P p = 0 (→ терминальный тип VT100), P v = 261 (→ мой xterm
версия), и P c = 0.
Тем не менее я понятия не имею, куда это прибывает из или как остановить его. Мое лучшее предположение - то, что некоторый обмен информацией между терминалом и Vim перестал работать, и что-то прослушивается.