Переотображение <Esc> в MacVim возмущает сам Vim

У меня есть следующая строка в моем .vimrc:

nnoremap <Esc> :noh<Cr>

Это хорошо работает в MacVim. Каждый раз, когда я открываю сам Vim, его "линейка команд" начинается с:

.2c

Если это имеет значение, когда входят для выполнения команды, Vim жалуется с E16: Invalid range.

Это - незначительное раздражение, но как я решаю этот вопрос?

5
задан 18.05.2011, 06:55

0 ответов

Отображение 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 перестал работать, и что-то прослушивается.

3
ответ дан 07.12.2019, 18:11

Теги

Похожие вопросы