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>
Обновить после обновления на вопрос, комментарии и принятие
Я оставил информацию выше нетронутой, но чтобы ответить на комментарии...
Столкновение с вашим плагином "autoclose" объясняет, почему это работает в редакторе, а не в
$MYVIMRC
, Вы можете обойти это, поместив свое отображение в файл плагина в директорию после.Я использовал заглавную букву для
<C-H>
отображение в соответствии с обозначениями в официальной документации. В документации говорится:Случай
{char}
не имеет значения; таким образом CTRL - A и CTRL - a эквивалентны.Если вы хотите отобразить CTRL - Shift - H, используйте
inoremap <C-S-H>
вместо.я очень рад
:verbose map
помог вам отследить источник вашей проблемы!:verbose
это удобный инструмент при отладке скриптов Vim.
Удачи!
Мое решение:
inoremap <c-p> <up>
inoremap <c-n> <down>
inoremap <c-b> <left>
inoremap <c-f> <right>
Преимущество: они широко используются во всех программах.