Backspace не работает в режиме vim в терминале Mac OS

Я использую ZSH на терминале Mac и включаю режим vi в терминале, добавляя set -o vi к моему ~/.zshrc. Когда я нахожусь в строке подсказки и набираю Hello, затем нажимаю Esc, чтобы войти в режим без вставки, перемещаю курсор на e и нажимаю i, чтобы войти в режим вставки, я не могу стереть H, нажав клавишу backspace.

Обратите внимание, что клавиша Backspace работает в том же сценарии, когда я открываю новый файл, используя vim test.txt и пишу Hello и следуя инструкциям выше, поэтому я не думаю, что это проблема с настройками vim.

Кроме того, я запустил vi --version в своем ~/.zshrc прямо перед set -o vi , и вот часть результата, который я получил: VIM - Vi IMproved 9.0 (2022 Jun 28, compiled Feb 10 2024 02:02:30)

Пожалуйста, помогите мне!


56
1

Ответ:

Решено

Попробуйте bindkey -M viins "^?" backward-delete-char.

Backspace обычно привязан к vi-backward-delete-char, что специально задокументировано, чтобы не делать то, что вы просите:

vi-backward-delete-char (непривязанный) (X) (^H)

Удалить символ за курсором, не меняя строки. Если вы находитесь в режиме вставки, это не приведет к удалению после точки, в которой последний раз был включен режим вставки.

backward-delete-char не имеет такого ограничения.