У меня есть следующая конфигурация в моем файле vimrc.

inoremap <C-A> <Plug>InsertComment

И где-то в моей папке VIM я определил

inoremap <silent> <Plug>InsertComment <ESC>:call INSERT_MY_COMMENT

Отображение работало очень хорошо после того, как я настроил это. Но как-то недавно он перестал функционировать. И всякий раз, когда я могу использовать связывание клавиш в режиме вставки, вместо вызова вызываемой мной функции, vim просто вставит весь <Plug>InsertComment в мой буфер.

Я попытался отладить и обнаружил, что если я сопоставляю

inoremap <C-A> <ESC>:call INSERT_MY_COMMENT

он по-прежнему работает как нужно, что означает, что с частью <Plug> должно быть что-то не так.

Но я действительно понятия не имею, почему <Plug> перестал интерпретироваться vim как дескриптор для вызова других плагинов.

Я также пытался вручную скопировать и вставить

inoremap <silent> <Plug>InsertComment <ESC>:call INSERT_MY_COMMENT
inoremap <C-A> <Plug>InsertComment

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

1 ответ1

0

Извините, я понял проблему. Мы просто не должны использовать конфигурацию noremap при работе с <Plug> . Смена карты обратно на imap будет работать.

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