Как мне получить Ctrl-Backspace для удаления слова в vim внутри gnome-терминала?
Я бы хотел, чтобы Ctrl-Backspace удаляло текущее слово в режиме вставки vim. Изнутри xterm я могу отключить это через
:inoremap <C-H> <C-W>
но в терминале gnome я не могу найти способ сделать это.
Когда в режиме вставки vim, если я набираю control-v, а затем нажимаю backspace, я получаю ^ H в xterm и ^? в гном-терминале. К сожалению,
:inoremap <C-?> <C-W>
не выполняет трюк в терминале gnome; control-backspace просто стирает один символ независимо от того, что.
Что касается кодов ASCII:
Gnome-terminal позволяет вам изменить символ обратного пространства в разделе "Редактировать" → "Настройки профиля" → "Совместимость". К сожалению, ни один параметр не работает, насколько я могу судить: любой символ, который я применяю к Backspace с помощью настроек, если я попытаюсь сопоставить сам символ, например
:inoremap <C-H> <C-W>
то регулярное обратное пространство и обратное управление управляют как стиранием целого слова; и если я попробую сопоставить элемент управления плюс этот символ, например
:inoremap <C-^H> <C-W>
то регулярное backspace и control-backspace просто стирают один символ.
Ответы
Ответ 1
gnome-terminal libvte должен быть исправлен.
libvte уже имеет несколько вариантов отображения backspace, ни один из которых не выделяет Ctrl-backspace. Ему нужен вариант, который, возможно, следующий за поведением консоли linux (^? Для backspace, ^ H для Ctrl-backspace). Смотрите эту ошибку gnome.
Обновление 2015: это было исправлено в 23c7cd0f99d504cbab06d4c27254d4f3e2807ba8.
libvte 0.41.90, 0.40.3 и новее имеют исправление.