Я новичок в vi, на самом деле я начал изучать vi с сегодняшнего дня, и я застрял в поведении клавиши Backspace.
На самом деле, когда я впервые запустил vi на Ubuntu 12.04, мой ключ возврата работал нормально, но после этого он начал странно себя вести. Всякий раз, когда я нажимаю клавишу Backspace в режиме вставки, он просто перемещается на одну позицию влево вместо стирания символа.
Как я могу вернуть функциональность возврата по умолчанию? Обратите внимание, что я не хочу устанавливать vim или устанавливать nocompatibilty.
Вот самое простое решение.
Откройте терминал, перейдите в домашний каталог и введите
vi .vimrc
. Откройте новый файл, добавьте эти строки в файл и выйдите, сохранив
$ set nocompatible
$ set backspace=2
Установите полный пакет vim, чтобы получить функциональность клавиши «Backspace» и «Стрелка»
sudo apt-get update
sudo apt-get install vim
Необходимо измениться на режим "вставки" путем перемещения курсора с i
. Существуют другие способы удалить символы непосредственно. Можно загрузить powerpoint, который я использую при обучении класса VI здесь.
Это кажется, что Вы находитесь в режиме "Command". Перемещать Ваш курсор:
H
= Оставленный, J
= K
= Вниз, L
= Право
После того как Вам расположили Ваш курсор, можно удалить текст следующим образом:
x
Удаляет символ под курсором
X
Удаляет символ перед курсором
dw
Удаляет от курсора до следующего слова
dd
Удаляет строку, курсор идет.
Для введения текста можно использовать один из режимов ввода текста.
a
Добавляет текст направо от курсора
A
Добавляет текст в конец текущей строки
i
Добавляет текст слева от курсора
I
Добавляет тест к beginin текущей строки
o
Открывает новую строку ниже текущей строки и размещает Вас в режим ввода текста
O
Открывает новую строку Выше текущей строки и размещает Вас в режим ввода текста
Выйти из режима Ввода текста и возвратиться к Командному режиму, использованию Esc
.
Отменить изменения: (Студенческий фаворит)
u
Отмените последнюю вводимую команду
U
Отмените все изменения в ** текущая строка **
Сохранить/Выйти: :w
Записи (Сохранили) файл и остаются открытыми
:wq
Записи (Сохранили) файл и выходят VI
:q
Выходы (Выходы), если Вы не внесли изменений
:q!
Выходы (Выходы), не сохраняя изменения
ZZ
Записи (Сохранили) файл и выходят VI (то же как :wq
)
Это правильное поведение для vi, и он стирает символ, он просто не показывает его, заменяя его пробелом, как в vim. Это станет очевидным, если перезаписать стертый символ другим символом или переключиться обратно в командный режим.
например. начиная с командного режима в пустой строке, следующая строка будет содержать строку fo
:
i kbd> f kbd> o kbd > o kbd> Backspace kbd> Esc kbd>
Прежде чем нажимать клавишу Esc kbd>, строка будет читать foo
, но последний o
был помечен как «erase-column». См. http://pubs.opengroup.org/onlinepubs/9699919799/utilities/vi.html#tag_20_152_13_88 (в основном пункт 4 под этим заголовком, а также просмотрите немного ниже, чтобы прочитать о < Control > -H)