Backspace в режиме вставки в vi не стирает символ

70

Я новичок в vi, на самом деле я начал изучать vi с сегодняшнего дня, и я застрял в поведении клавиши Backspace.

На самом деле, когда я впервые запустил vi на Ubuntu 12.04, мой ключ возврата работал нормально, но после этого он начал странно себя вести. Всякий раз, когда я нажимаю клавишу Backspace в режиме вставки, он просто перемещается на одну позицию влево вместо стирания символа.

Как я могу вернуть функциональность возврата по умолчанию? Обратите внимание, что я не хочу устанавливать vim или устанавливать nocompatibilty.

Сапратива Бхаттачарджи
источник

Ответы:

39

Это правильное поведение для vi, и он стирает символ, он просто не показывает его, заменяя его пробелом, как в vim. Это станет очевидным, если перезаписать стертый символ другим символом или переключиться обратно в командный режим.

Например, начиная с командного режима в пустой строке, следующее приведет к строке, содержащей fo:

ifooBackspaceEsc

До того, как вы нажмете Escклавишу, строка будет читать foo, но последняя oбыла помечена как «erase-column». См. Http://pubs.opengroup.org/onlinepubs/9699919799/utilities/vi.html#tag_20_152_13_88 (в основном пункт 4 под этим заголовком, а также просмотрите немного ниже, чтобы прочитать о <Control> -H)

geirha
источник
73

Вот самое простое решение.
Откройте терминал, перейдите в домашний каталог и введите

vi .vimrc

открыть новый файл, теперь добавить эти строки в файл и выйти, сохранив

$ set nocompatible
$ set backspace=2
Адитья Чакилам
источник
9
ОП упомянул, что они не хотят использоватьnocompatibility
Кири
1
нет необходимости в совместимости, вы также можете сделать это, просто добавив вторую строку
Adithya Chakilam,
1
Вторая строка работает только для меня, если я также добавлю первую строку.
djjeck
Запустил с пустого .vimrc и удивился, почему Backspace не работает на Mac в iTerm2. Большое спасибо!
Игорь Малык
@ minerz029 добавьте, но это ответ для большинства людей, так как в заголовке страницы такой квалификации не было.
17
23

Вам нужно перейти в режим «вставки», перемещая курсор с помощью i. Есть и другие способы непосредственного удаления символов. Вы можете скачать powerpoint, который я использую при обучении классу по VI здесь .

Похоже, вы находитесь в режиме «Команда». Для перемещения курсора:
H= влево, J= вверх, K= вниз, L= вправо

Установив курсор, вы можете удалить текст следующим образом:
x Удаляет символ под курсором
X Удаляет символ до того, как курсор
dwУдаляет курсор от следующего слова
dd Удаляет строку, на которой находится курсор.

Для ввода текста вы можете использовать один из режимов ввода текста.
aДобавляет текст справа от курсора
AДобавляет текст в конец текущей строки
iДобавляет текст слева от курсора
IДобавляет тест в начало текущей строки
oОткрывает новую строку ниже текущей строки и переводит вас в режим ввода текста
OОткрывает новая строка над текущей строкой и переводит вас в режим ввода текста

Чтобы выйти из режима ввода текста и вернуться в командный режим, используйте Esc.

Для Отменить изменения: (студент фаворит)
uВыверните последнюю команду вошли
UШаг назад все изменения к текущей строке ** **

Чтобы сохранить / выйти: :wзаписывает (сохраняет) файл и остается открытым.
:wqЗаписывает (сохраняет) файл и выходит из ВП.
:qВыход ( выход ), если вы не внесли изменений.
:q! Выйти (выйти) без сохранения изменений.
ZZЗаписывает (сохраняет) файл и выходит из ВП. (так же, как :wq)

Argusvision
источник
11
ОП упоминает, что таинственное поведение происходит в режиме вставки . Так что это не ответ на заданный вопрос.
LarsH
На самом деле OP не был установлен в режиме вставки . Вопрос был отредактирован.
Argusvision
1
Хорошо. Ты прав. Похоже, я сделал предположение. По моему опыту, большинство новичков в ВИ сталкиваются с проблемами переключения режимов и навигации в командном режиме. Мои ученики часто жалуются и обвиняют ВИ в неправильном поведении, когда это просто ошибка пользователя или отсутствие понимания набора команд.
Argusvision
1
Понятный. Я согласен, что это обычная реакция на режим без вставки.
LarsH
Аргус, «в режиме вставки» был добавлен к заголовку вопроса в редактировании, но он был в теле вопроса с самого начала.
LarsH
13

Установите полный пакет vim, чтобы получить функциональность Backspace и клавиши со стрелками

sudo apt-get update
sudo apt-get install vim
Ратнала Джагадиш
источник
Это работает, как и ожидалось .. Лучший ответ
Вики
Это идеальный ответ. Нет необходимости редактировать файлы конфигурации, просто установите vim-runtimeпакет, и все работает, как я привык. Спасибо!
Олли Д-Мец