1

Я счастливый обладатель TypeMatrix 2030, а также счастливый пользователь vim. На этой клавиатуре <del> занимает центральное место, а <esc> как обычно, верхняя левая клавиша. Поэтому я хотел бы переназначить свой ключ <del> на <esc> . Пока что я добавил эти строки в мой .vimrc:

noremap <del> <esc>
nnoremap <del> <esc>
inoremap <del> <esc>
vnoremap <del> <esc>
xnoremap <del> <esc>
snoremap <del> <esc>
cnoremap <del> <esc>
onoremap <del> <esc>

Это почти нормально работает, за исключением режима командной строки: ввод :cmd<del> запустит справку как :cmd<enter> , а :cmd<esc> сотрет строку и вернется в нормальный режим.

Вот вывод для :verbose cnoremap <Del>:

c  <Del>       * <Esc>>    
    Last changed in ~/.config/vim/vimrc 

Вывод для других режимов дает схожий результат со странным двойным шевроном >> , но работает нормально (при вводе в режиме вставки переключится в обычный режим).

1 ответ1

1

Я думаю, что это поведение связано с тем, что описано в :help c_Esc (читайте "макросы" как "отображения"; они тесно связаны):

  <Esc>   When typed and 'x' not present in 'cpoptions', quit
          Command-line mode without executing.  In macros or when 'x'
          present in 'cpoptions', start entered command.

Вы можете обойти это, используя вместо этого <C-c> :

:cnoremap <del> <C-c>

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