Переназначение escape-ключа нарушает совместимость в vim
Я пытаюсь получить более возвышенное /atom-esq ощущение при использовании vim. Одна из вещей, которые я настроил, - неокончение, чтобы имитировать поведение автозаполнения другого редактора.
Я хотел <ESC>
ключ, чтобы закрыть всплывающее окно завершения, если оно было открыто, или вести себя нормально в противном случае. Я придумал это решение:
inoremap <expr><ESC> pumvisible() ? neocomplete#cancel_popup() : "\<ESC>"
Кажется, что это работает нормально (ESC ведет себя так, как можно было бы ожидать), но, похоже, нарушает несовместимость - клавиши со стрелками больше не работают должным образом в режиме вставки, они вставляют A/B/C/D и затем перевод строки (в зависимости от того, какой ключ я нажал).
Добавление set nocompatible
после того, как вышеупомянутая строка ничего не делает (я уже установил ее в первых двух строках моего vimrc), и набираю :set nocompatible
на время выполнения не влияет. Единственный способ исправить это, удалив переназначение.
Почему это происходит? Как я могу это исправить?