Почему vim запускается в режиме удаления?

Как указано в вопросе, мой vim запускается в режиме удаления. Если я открою файл и нажмите j, чтобы начать навигацию, это приведет к удалению первой строки.

Я выделил проблему до этой строки в моей .vimrc:

nnoremap <silent> <esc> :noh<return><esc>

Я не понимаю, почему это даже вызовет режим удаления. Кроме того, я полагаю, что я добавил <silent>, чтобы проинструктировать vim сделать это связывание без его выполнения, что, похоже, не так.

Какое объяснение, почему это происходит?

(боковое примечание, это сопоставление означает, что vim очищает поисковые запросы при нажатии esc)

Ответ 1

Если вы запустите эту команду в терминале:

$ vim file.txt -c 'nnoremap <silent> <esc> :noh'

Он покажет это внизу:

:noh[>1;3201;0c

vim как-то входит change-mode.


Вы можете изменить <esc> на <F5> (или другие клавиши). Если вы используете gvim, проблем нет. Это вызвано выделением специального ключа терминала.