Я недавно начал использовать Vim. Из предыдущих редакторов я привык удалять слова целиком, нажимая Ctrl- Backspace. Посмотрев документацию, я обнаружил, что это было сделано нажатием Ctrl- wв Vim. Проблема в том, что после привыкания к нажатию Ctrl- wя начал закрывать вкладки и чаты каждый раз, когда неправильно пишу слово (при написании этого вопроса я закрывал эту вкладку 5 раз). Поэтому я проверил, как сопоставить ключи в Vim, и попробовал это:
:imap <C-BS> <C-w>
К сожалению, это не сработало. После небольшого исследования я обнаружил, что терминал не различает Ctrl- Backspaceи Backspace. Я видел некоторые хаки и патчи, чтобы исправить эту проблему, но я не мог заставить их работать на терминаторе (это эмулятор, который я хочу использовать).
Есть ли способ сопоставить Ctrl- Backspaceв Vim при использовании терминатора?
источник
Ответы:
Из-за того, что ввод с клавиатуры обрабатывается внутри, к сожалению, сегодня это вообще невозможно. Некоторые сочетания клавиш, такие как Ctrl+ не алфавитный, не могут быть сопоставлены, и Ctrl+ буква против Ctrl+ Shift+ буква не может быть различена. (Если ваш терминал не отправляет для него отдельный код termcap , чего большинство не делает.) В режиме вставки или командной строки попробуйте ввести комбинацию клавиш. Если ничего не происходит / вставлено, вы не можете использовать эту комбинацию клавиш. Это также относится к
<Tab>
/<C-I>
,<CR>
/<C-M>
/<Esc>
/<C-[>
и т. Д. (Единственное исключение -<BS>
/<C-H>
.) Это известная проблема и предмет различных обсуждений vim_dev и IRC-канала #vim.Некоторые люди (прежде всего Пол ЛеоНерд Эванс) хотят это исправить (даже для консоли Vim в терминалах, которые поддерживают это), и выдвинули различные предложения, ср. http://groups.google.com/group/vim_dev/browse_thread/thread/626e83fa4588b32a/bfbcb22f37a8a1f8
Но на сегодняшний день никаких патчей или добровольцев еще не появилось, хотя многие выразили желание иметь это в будущем выпуске Vim 8.
источник
^?
как backspace, так и ctrl + backspace, что делает их (AFAIK) неразличимыми. xterm, с другой стороны, отправляет^H
backspace и^?
ctrl + backspace, делая их различимыми.^H
) неотличима от ctrl + h (^H
). Возможно, мы сможем создать новую escape-последовательность, чтобы различать все три? Я не знаю, насколько это легко, но кажется, что это было бы безопасно сделать, потому что с текущим состоянием вещей (некоторые терминалы используют^?
для возврата, другие^H
, и наоборот), я не могу представить себе очень много терминальных приложений (если есть вообще) рассмотрим сценарий ctrl + backspace (он был бы полностью неопределенным из-за разнообразия терминалов) ...