TL; DR: используйте vim -u DEFAULTS foo
вместо.
Это должно поддерживать Vim в режиме 'nocompatible'
, который необходим для распознавания <Key>
кодов в отображениях.
Симптомы, которые вы описываете, соответствуют включению <
в 'cpoptions'
, который документирован для:
Отключить распознавание специальных кодов клавиш в форме <>
в отображениях, сокращениях и в части «to» команд меню. Например, команда :map X <Tab>
приводит к преобразованию X
в "<Tab>
" (5 символов), если включено <
; но "^I
" (^I
является действительным <Tab>
), когда исключено <
.
Это согласуется с тем, что вы получаете буквальный результат сопоставления в командной строке без правильного расширения кодов клавиш <c-u>
и <cr>
.
Значения по умолчанию для 'cpoptions'
:
Vim по умолчанию: "aABceFs",
По умолчанию: все флаги
Таким образом, это означает, что <
(вместе со всеми остальными флагами) будет включен по умолчанию в режиме Vi, который срабатывает при установке 'compatible'
(или, возможно, более точно, когда 'nocompatible'
не установлено.)
Оказывается, когда вы используете -u NONE
в командной строке, запускающей Vim, он запускается в режиме 'compatible'
.
Вы можете использовать вместо -u DEFAULTS
, что очень похоже на -u NONE
, но все равно будет загружен скрипт defaults.vim
, поставляемый с Vim runtime , который, среди прочего, установит 'nocompatible'
.
С документы :
Когда передается -u DEFAULTS
(все заглавные буквы), это имеет тот же эффект, что и -u NONE
, но загружается скрипт defaults.vim
, который также устанавливает 'nocompatible'
.
Использование аргумента -u
с аргументом, отличным от DEFAULTS
, имеет побочный эффект, что опция 'compatible'
будет включена по умолчанию. Это может иметь неожиданные эффекты.