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