Резервна область у режимі вставки in vi не стирає символ


69

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

Насправді, коли я вперше запустив vi на моєму Ubuntu 12.04, клавіша зворотної області працювала нормально, але після цього вона почала вести себе дивно. Кожного разу, коли я натискаю на зворотну простір у режимі вставки, він просто переміщується на одне місце ліворуч, а не стирає символ.

Як я можу отримати функцію зворотного простору за замовчуванням? Зауважте, що я не хочу встановлювати vim або встановлювати несумісність.

Відповіді:


39

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

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

ifooBackspaceEsc

Перш ніж натиснути Escклавішу, рядок буде прочитаний foo, але останній oпозначений як "стовпчик стирання". Дивіться http://pubs.opengroup.org/onlinepubs/9699919799/utilities/vi.html#tag_20_152_13_88 (головним чином пункт 4 під цим заголовком, а також перегляньте трохи далі, щоб прочитати про <Control> -H)


72

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

vi .vimrc

відкрийте новий файл. Тепер додайте ці рядки до файлу та вийдіть, збереживши

$ set nocompatible
$ set backspace=2

9
ОП зазначила, що вони не хочуть користуватисяnocompatibility
kiri

1
не потрібно ніякої сумісності. Ви також можете це зробити, додавши другий рядок
Адіт'я Чакілам

1
Другий рядок працює для мене, якщо я також додаю перший рядок.
djjeck

Почав із порожнього .vimrc і поцікавився, чому backspace не працює на mac в iTerm2. Дуже дякую!
Ігор Малик

@ minerz029 додайте, але ця відповідь більшість людей тут, оскільки такої кваліфікації в заголовку сторінки не було.
Muhd

22

Вам потрібно перейти в режим "вставки", перемістивши курсор за допомогою i. Є й інші способи видалення символів безпосередньо. Ви можете завантажити Powerpoint, який я використовую під час викладання класу на VI тут .

Це здається, що ви перебуваєте в режимі «Команда». Щоб перемістити курсор:
H= Вліво, J= Вгору, K= Вниз, L= Вправо

Після встановлення курсору ви можете видалити текст наступним чином:
x Видаляє символ під курсором
X Видаляє символ перед курсором
dwВидаляє курсор до наступного слова
dd Видаляє рядок, на якому курсор.

Для введення тексту можна скористатися одним із режимів введення тексту.
aДодає текст праворуч від курсору
AДодає текст у кінці поточного рядка
iДодає текст зліва від курсору
IДодає тест для початку поточного рядка Відкриває новий рядок під поточним рядком та переводить вас у режим введення тексту Відкривається новий рядок Над поточним рядком і переводить вас у режим введення тексту
o
O

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

Щоб скасувати зміни: (Улюблений учень)
uСкасувати останню введену команду
U Скасувати всі зміни в ** поточному рядку **

Для збереження / виходу: :wЗаписує (зберігає) файл і залишається відкритим
:wqЗаписує (зберігає) файл і закриває VI
:qВиходи (Виходи), якщо ви не внесли жодних змін
:q! Вихід (Вихід) без збереження змін
ZZЗаписує (зберігає) файл і виходить з VI (те саме :wq)


11
ОП зазначила, що таємнича поведінка відбувається у режимі вставки . Тож це не відповідь на поставлене запитання.
LarsH

Насправді ОП не вказала в режимі вставки . Питання було відредаговано.
Аргусвізія

1
Гаразд. Ви маєте рацію. Схоже, я зробив припущення. Згідно з моїм досвідом, більшість людей, що не знаходяться в VI, стикаються з проблемами перемикання режимів і навігацією, коли перебувають у командному режимі. Мої студенти часто скаржаться і звинувачують VI у неправильній поведінці, коли це просто помилка користувача чи відсутність розуміння набору команд.
Argusvision

1
Зрозуміло. Я погоджуюсь, що це звичайна реакція на режим без вставки.
LarsH

Аргус "в режимі вставки" був доданий до заголовка питання в редакції, але він був в основі питання з самого початку.
LarsH

13

Встановіть повний пакет vim, щоб отримати функцію повернення назад та клавіш зі стрілками

sudo apt-get update
sudo apt-get install vim

Працює так, як очікувалося. Найкраща відповідь
Вікі

Це ідеальна відповідь. Не потрібно редагувати будь-які конфігураційні файли, просто встановіть vim-runtimeпакет і все працює, як я звик. Дякую!
Оллі Д-Мец
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.