Привязать клавишу удаления в режиме vi

Я использую плагин vi-mode для oh-my-zsh. В моем .zshrc у меня есть

bindkey '^[[3~' delete-char

где ^[[3~ — escape-код моего ключа удаления. Однако это работает только в режиме вставки, но не в командном режиме. Когда я печатаю

$ abcd

переместите курсор в начало строки и нажмите del в командном режиме, я получаю

$ ABCd

поэтому, по-видимому, последовательность символов клавиши удаления интерпретируется буквально. Как я могу заставить клавишу удаления фактически удалить символ в командном режиме?


person gnebehay    schedule 06.04.2017    source источник


Ответы (2)


bindkey -a '^[[3~' delete-char

Zsh имеет множество различных раскладок, и по умолчанию bindkey будет связывать клавиши в обычной раскладке режима вставки. Клавиатура командного режима выбирается с помощью -M vicmd. -a — это ярлык для этого. Вы можете перечислить раскладки клавиш с помощью bindkey -l. Вы увидите, что есть также viopp, который используется для движений после клавиш, таких как c или d. Также есть визуальный режим для визуального выбора.

person okapi    schedule 06.04.2017

Сейчас 2020 год, и я не уверен, что ответ @okapi устарел или просто отсутствует часть, но для меня мне пришлось использовать:

bindkey -a '^[[3~' vi-delete-char

delete-char без префикса vi- не помогло, но его добавление помогло.

person alrob    schedule 27.08.2020