5

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

nnoremap <Esc> :noh<Cr>

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

.2c

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

Это небольшое раздражение, но как мне решить эту проблему?

2 ответа2

3

Картографирование 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 не выполняется, и что-то происходит с ошибками.

0

Проблема в том, что для некоторого терминала vim получает [> 0; 261; 0c таким образом. И последнее "c" делает запуск vim болезненным, но я нашел простой способ пропустить первую "c" при запуске:

nnoremap c :nunmap c<Cr>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .