Основные переназначения в Vim
Я до сих пор не могу понять, как переопределяются ключи в Vim. У меня есть следующее в моем Vimrc
" This works
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l
" But this doesn't?
nnoremap <C-+> <C-w>> " Should map to Ctrl +
nnoremap <C--> <C-w>< " Should map to Ctrl -
Я пытаюсь переназначить комбинации клавиш изменения размера окна, потому что они немного неуклюжи. Слишком много нажатий клавиш для слишком малого движения. Но почему два нижних не будут работать, если они написаны точно так же, как верхние два?
2 ответа
Из-за того, что ввод с клавиатуры обрабатывается внутри, это, к сожалению, сегодня вообще невозможно, даже в GVIM. Некоторые сочетания клавиш, такие как Ctrl + не алфавитный, не могут быть сопоставлены, и Ctrl + буква против Ctrl + Shift + буква не может быть различена. (Если ваш терминал не отправляет для него отдельный код termcap, чего большинство не делает.) В режиме вставки или командной строки попробуйте ввести комбинацию клавиш. Если ничего не происходит / вставлено, вы не можете использовать эту комбинацию клавиш. Это также относится к <Tab>
/ <C-I>
, <CR>
/ <C-M>
/ <Esc>
/ <C-[>
и т. д. (Единственное исключение <BS>
/ <C-H>
.) Это известная проблема и предмет различных дискуссий на vim_dev и IRC-канале #vim.
Некоторые люди (прежде всего Пол ЛеоНерд Эванс) хотят это исправить (даже для консоли Vim в терминалах, которые поддерживают это), и выдвинули различные предложения.
Но на сегодняшний день никаких патчей или добровольцев еще не появилось, хотя многие выразили желание иметь это в будущем выпуске Vim 8.
Я думаю, что дело в историческом значении модификатора CTRL в ASCII. В моей системе (Mac OS X, Vim 7.3) я получаю =
когда я печатаю <C-+>
в режиме вставки в графическом интерфейсе, и я получаю звуковой сигнал при попытке в терминале.
Короткая версия: не каждый ключ может быть изменен <C->
,