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

5421
dsg

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

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

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

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

6

4 ответа на вопрос

6
peth

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

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

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

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

Спасибо, `stty erase ^?` Работал на меня. Я добавил его в мой файл `.bashrc`. dsg 13 лет назад 0
1
elcash

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

Accessing profile in gnome-terminal

Setting backspace behavior

1
David Klann

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

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

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

stty erase '^?' stty erase ^VDEL 
0
broomdodger

Try adding the following to your .bashrc ( or .profile )
stty erase ^H
That is the character "^" followed by the character "H"
--or--
If that does not work, to get "^H" type control-V followed by control-H

See vim help
:help gui-pty-erase