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

10

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

Сапратива Бхаттачарджи
источник
5
Это традиционное поведение vi. Если у вас есть возможность установить несовместимость, то вы уже используете vim.
Стефан Шазелас
Я не знаю, что vi установлен в Ubuntu. По моему опыту, vi в мире Linux - это просто символическая ссылка на vim. Если вы хотите изучить настоящий vi, либо установите nvi, либо проект hairloom vi.
Предраг Пуносевац

Ответы:

6

Иногда viкоманда является псевдонимом для vimи при вызове as viвключает ее режим vi.

Даже в традиционном режиме Backspace удаляет символ, но не отображает его как удаленный сразу. (После нажатия ESC символы исчезают.)

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

Михась
источник
9
  1. Проверьте, действительно ли вы используете обычный viчерез

    $ vi --version | head -n 1

    Это дает на моей машине (Debian 7)

    VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Feb 10 2013 02:27:59)

    vim можно заставить вести себя больше как vi. Это можно сделать, выдав команду viвместо vimкомандной строки, где viесть только символическая ссылка vim, и в этом случае vim открывается в режиме vi. Вы можете проверить это с :set compatible?.

  2. Как упоминалось в предыдущем ответе, эффект возврата становится видимым только после того, insert modeкак set compatibleон включен, когда включен.

Примечание. В режиме, совместимом с vi, вы не можете возвращать назад текст, который был ранее введен (перед insert modeвводом), или eol или отступ insert mode. увидеть :help 'bs'

    'backspace' 'bs'        string  (default "")
                            global
                            {not in Vi}
    Influences the working of <BS>, <Del>, CTRL-W and CTRL-U in Insert
    mode.  This is a list of items, separated by commas.  Each item allows
    a way to backspace over something:
    value   effect
    indent  allow backspacing over autoindent
    eol     allow backspacing over line breaks (join lines)
    start   allow backspacing over the start of insert; CTRL-W and CTRL-U
            stop once at the start of insert.

    When the value is empty, Vi compatible backspacing is used.
    For backwards compatibility with version 5.4 and earlier:
    value   effect
      0     same as ":set backspace=" (Vi compatible)
      1     same as ":set backspace=indent,eol"
      2     same as ":set backspace=indent,eol,start"

Попробуйте разные настройки, чтобы понять их значение: введите символы / разрывы строк и отступы в режиме вставки, выйдите и снова войдите в режим вставки, а затем попробуйте возврат.

Пользователи, которые не знакомы с поведением vi и не настаивают на использовании простого vi (в любом случае, не рекомендуется) :set backspace=indent,eol,start. Afaik на Debian - это обычно общесистемный файл конфигурации, установленный с этим параметром.

Вы можете получить текущие настройки через :set bs?.

Hotschke
источник
5

Создайте новый файл в домашнем каталоге пользователя с именем .vimrc, если его там еще нет. Здесь мы будем создавать и редактировать одновременно с vi

sudo vi ~/.vimrc

Добавьте следующие команды, которые включают в себя отключение режима совместимости и функцию стирания клавиш возврата:

set nocp
set backspace=indent,eol,start

Сохраните и выйдите из файла, используя

:wq

Отключение режима совместимости позволяет использовать клавиши со стрелками, к которым привыкли старые парни vi.

Поскольку при создании файла мы выполняем sudo, владельцем файла, вероятно, будет пользователь root. Вы можете прикрепить файл к пользователю.

В моем случае это был малиновый пи, поэтому пользователь и группа - это пи:

chown pi:pi ~/.vimrc

Теперь снова запустите vi и наслаждайтесь!

рекурсию
источник
1
set nocpсделал свое дело для меня
Луи М
0

просто поместите в свой ~/.zshrc

bindkey "^?" backward-delete-char
jhvaras
источник