Вы можете добавить это в свою конфигурацию zsh:
bindkey -M viins '^?' backward-delete-char
bindkey -M viins '^H' backward-delete-char
Vi-mode — это просто набор предварительно настроенных раскладок (viins, vicmd, viopp, visual), которые привязать определенные клавиши к определенным виджетам. Некоторые из этих виджетов специально разработаны таким образом, чтобы вести себя так же, как редактор vi.
В вашем случае это виджет vi-backward-delete-char
, который по умолчанию привязан к Backspace в режиме viins, который имеет специальная функция, позволяющая не удалять данные после позиции, в которой был введен режим вставки.
Часто существуют слегка отличающиеся версии этих виджетов, которые больше соответствуют редактору emacs. В этом случае это будет виджет backward-delete-char
, который не ограничен текущим сеансом вставки.Хотя по умолчанию он привязан к режиму emacs, нет жестких ограничений на то, какой виджет можно использовать в каком режиме. Вы можете использовать backward-delete-char
в vi-mode, просто переназначив Backspace для вызова виджета backward-delete-char
. .
Причина наличия двух привязок — ^?
и ^H
— в том, что от терминала зависит, какая из этих двух последовательностей клавиш отправляется при нажатии . Возврат. По умолчанию оба привязаны к одному и тому же виджету в vi-mode, а также в emacs-mode.