7

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

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

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

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

4 ответа4

6

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

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

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

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

1

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

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

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

1

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

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

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

stty erase '^?'
stty erase ^VDEL
0

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .