Backspace не работает, даже после попытки исправить

Я попытался, следуя инструкциям клавиши Backspace, не работает в vim, но у меня все еще остается та же проблема: BACKSPACE вставляет ^?

Так сказать: вставка set bs=indent,eol,start в моем ~/.vimrc не решил проблему.

Я уверен, что загружаю правильный исходный файл (я проверил другой параметр, и изменение распространено).

Я использую: Vi IMproved 7.2 на Ubuntu с Gnome. В терминальном приложении backspace работает правильно.

4 ответа

Решение

Vim, похоже, не понимает, что ваш терминал отправляет как символ стирания. Как это варьируется между ^? (Ctrl +? Или DEL для "удаления") и ^H (Ctrl + H или BS для "возврата"), Vim зависит от того, кто сказал ему, чего ожидать.

Этого не должно случиться, если

  • вы меняете соответствующие настройки в вашем vimrc,
  • вы меняете значение TERM переменная окружения,
  • ваша информационная база терминала испорчена, или
  • Вы страдаете от заражения гремлином.

Для устранения неполадок попробуйте запустить команду stty erase ^? перед запуском Vim, и посмотрите, исправит ли это. Введите ^? не отдельно как ^ а также ?, но сначала нажав Ctrl + V, затем клавишу Backspace. Если ваша оболочка ведет себя хорошо, это должно привести к буквальному представлению того, что ваш терминал отправляет, когда вы нажимаете эту клавишу.

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

Большинство современных версий stty(1) (включая версию, поставляемую с GNU Coreutils) интерпретируют двухсимвольные последовательности ^? а также ^h в качестве контрольной последовательности ASCII DEL и ASCII BS (соответственно). Или, в более общем случае, двухсимвольные последовательности, начинающиеся с ^ в качестве их эквивалентного управляющего символа ASCII.

Таким образом, две следующие команды эквивалентны:

stty erase '^?'
stty erase ^VDEL

Если вы используете gnome-терминал, тогда должна быть настройка, чтобы Backspace эмулировал ^H. В других эмуляторах терминала есть похожие настройки; это первое место, куда я бы пошел, так как никто не упомянул об этом.

Доступ к профилю в гном-терминале

Настройка поведения возврата

Попробуйте добавить следующее в ваш.bashrc (или.profile)
стереть стереть ^H
Это символ "^", за которым следует символ "Н"
--или же--
Если это не работает, для получения "^H" введите control-V, а затем control-H

См помощь
:help gui-pty-erase

Другие вопросы по тегам