Переход к началу действия вставки в режиме vi оболочки Z

Переход к началу действия вставки в режиме vi оболочки Z

Можно ли настроить vi-режим оболочки Z так, чтобы нажатие клавиши backspace могло удалять символы?допозиция, в которой началось действие вставки?

По сути, поведение vim можно реализовать, добавив следующую строку~/.vimrc

set backspace=start

– возможно ли это сделать в режиме vi оболочки Z?

решение1

Вы можете добавить это в свою конфигурацию zsh:

bindkey -M viins '^?' backward-delete-char
bindkey -M viins '^H' backward-delete-char

Объяснение:

Vi-режимэто просто набор предварительно настроенных раскладок (вина,викмд,виопп,визуальный), которые связывают определенные клавиши с определенными виджетами. Некоторые из этих виджетов специально разработаны для поведения, близкого к тому, как ведут себявиредактор делает.

В вашем случае это vi-backward-delete-charвиджет, который по умолчанию привязан Backspaceквинарежим, имеющий особую функцию — не удалять данные после позиции, в которой был включен режим вставки.

Часто существуют немного отличающиеся версии этих виджетов, которые ведут себя более в соответствии сemacsредактор. В этом случае это будет backward-delete-charвиджет, который не ограничен текущим сеансом вставки. Хотя по умолчанию он привязан крежим emacs, нет жестких ограничений на то, какой виджет может быть использован в каком режиме. Вы можете использовать backward-delete-charвvi-режимпросто перепривязав его Backspaceдля вызова виджета backward-delete-char.

Причина наличия двух привязок - ^?и ^H- заключается в том, что от терминала зависит, какая из этих двух последовательностей клавиш будет отправлена ​​при нажатии Backspace. По умолчанию обе привязаны к одному и тому же виджету вvi-режима такжережим emacs.

Связанный контент