Vim: Как переназначить <ch> в режиме вставки?

Я хочу отобразить следующее для навигации в режиме вставки:

  • <c-h> # Двигай влево
  • <c-j> # Двигаться вниз
  • <c-k> # Двигаться вверх
  • <c-l> # Двигаться вправо

Итак, я добавил следующее к моему .vimrc:

inoremap <c-h> <left>
inoremap <c-j> <down>
inoremap <c-k> <up>
inoremap <c-l> <right>

Сейчас,

  • Левый не работает [Вместо этого он удаляет левый символ]
  • Правильно работает!
  • Ап работает!
  • Вниз работает!

Насколько я понимаю, <c-h> по умолчанию deletes left character, Но я не могу это переопределить.

Я даже попробовал это:

 inoremap <c-j> <down>
 inoremap <c-k> <up>
 inoremap <c-l> <right>
 " Re-mapping <c-h> for insert-mode
 autocmd InsertEnter call RemapCtrlH()
 function RemapCtrlH()
     iunmap <c-h>
     inoremap <c-h> <left>
 endfunction

Но даже это не сработало:(

Пожалуйста помоги!

2 ответа

Решение

Итак, я добавил следующее к моему .vimrc:

inoremap <c-j> <down>
inoremap <c-j> <down>
inoremap <c-k> <up>
inoremap <c-l> <right>

Ваша первая и вторая строки одинаковы! Измените первое на следующее:

inoremap <C-H> <Left>

Вы можете подтвердить свое сопоставление с:

:verbose imap <C-H>

Обновить после обновления на вопрос, комментарии и принятие

Я оставил информацию выше нетронутой, но чтобы ответить на комментарии...

  1. Столкновение с вашим плагином "autoclose" объясняет, почему это работает в редакторе, а не в $MYVIMRC, Вы можете обойти это, поместив свое отображение в файл плагина в директорию после.

  2. Я использовал заглавную букву для <C-H> отображение в соответствии с обозначениями в официальной документации. В документации говорится:

    Случай {char} не имеет значения; таким образом CTRL - A и CTRL - a эквивалентны.

    Если вы хотите отобразить CTRL - Shift - H, используйте inoremap <C-S-H> вместо.

  3. я очень рад :verbose map помог вам отследить источник вашей проблемы! :verbose это удобный инструмент при отладке скриптов Vim.

Удачи!

Мое решение:

inoremap <c-p> <up>
inoremap <c-n> <down>
inoremap <c-b> <left>
inoremap <c-f> <right>

Преимущество: они широко используются во всех программах.

Другие вопросы по тегам