Rücktaste im Einfügemodus löscht keine Zeichen

10

Ich bin neu in vi , eigentlich habe ich begonnen habe vi von heute zu lernen , und ich habe das Verhalten der steckengeblieben Backspace Schlüssel. Als ich vi auf meinem Ubuntu 12.04 zum ersten Mal startete, funktionierte meine Rücktaste tatsächlich normal, aber danach hat sie sich merkwürdig verhalten. Immer wenn ich im Einfügemodus die Rücktaste drücke, wird nur eine Stelle nach links verschoben, anstatt das Zeichen zu löschen. Wie kann ich die Standard-Backspace-Funktionalität wiederherstellen? Bitte beachten Sie, dass ich vim nicht installieren oder keine Kompatibilität einstellen möchte.

Saprativa Bhattacharjee
quelle
5
Das ist das traditionelle vi-Verhalten. Wenn Sie die Option zum Festlegen der Nichtkompatibilität haben, verwenden Sie diese bereits vim.
Stéphane Chazelas
Mir ist nicht bekannt, dass vi unter Ubuntu installiert ist. vi in ​​der Linux-Welt ist meiner Erfahrung nach nur eine symbolische Verbindung zu vim. Wenn Sie real vi lernen möchten, installieren Sie entweder nvi oder hairloom project vi.
Predrag Punosevac

Antworten:

6

Manchmal ist der viBefehl ein Alias ​​für vimund wenn er aufgerufen wird, viaktiviert er seinen vi-Modus.

Selbst im herkömmlichen Modus löscht die Rücktaste das Zeichen, zeigt es jedoch nicht sofort als gelöscht an. (Nach dem Drücken von ESC sind die Zeichen verschwunden.)

Vermutlich müssen Sie wählen, ob Sie vidas mit dem beschriebenen Verhalten verbundene oder vimdas verwenden möchten, was es so macht, wie Sie es erwarten.

michas
quelle
9
  1. Überprüfen Sie, ob Sie tatsächlich Plain viVia verwenden

    $ vi --version | head -n 1

    Dies gibt auf meinem Computer (Debian 7)

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

    vim kann dazu gebracht werden, sich eher wie vi zu verhalten. Dies kann durch Eingabe des Befehls vianstelle der Befehlszeile erfolgen vim, in der vinur ein Sym-Link zu vorhanden vimist. In diesem Fall wird vim im vi-Modus geöffnet. Sie können dies mit überprüfen :set compatible?.

  2. Wie von der vorherigen Antwort erwähnt, wird die Wirkung des Backspace nur sichtbar nach dem Verlassen in , insert modewenn set compatibleaktiviert ist.

Hinweis: Im vi-kompatiblen Modus können Sie keine Rücktaste über Text insert modeeingeben, der zuvor (vor der Eingabe ) eingegeben wurde, oder über EOLs oder Einrückungen in insert mode. sehen :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"

Probieren Sie die verschiedenen Einstellungen aus, um ihre Bedeutung zu verstehen: Geben Sie im Einfügemodus Zeichen / Zeilenumbrüche und Einrückungen ein, beenden Sie den Einfügemodus und geben Sie ihn erneut ein. Versuchen Sie dann, den Abstand zurückzusetzen.

Benutzer, die mit dem Verhalten von vi nicht vertraut sind und nicht darauf bestehen, einfaches vi zu verwenden (ohnehin nicht empfohlen), sollten dies tun :set backspace=indent,eol,start. Afaik unter Debian ist normalerweise eine systemweite Konfigurationsdatei mit dieser Einstellung installiert.

Sie können die aktuelle Einstellung über erhalten :set bs?.

Hotschke
quelle
5

Erstellen Sie eine neue Datei im Benutzer-Ausgangsverzeichnis mit dem Namen .vimrc, falls diese noch nicht vorhanden ist. Hier erstellen und bearbeiten wir gleichzeitig mit vi

sudo vi ~/.vimrc

Fügen Sie die folgenden Befehle hinzu, darunter das Deaktivieren des Kompatibilitätsmodus und das Löschen der Rücktaste:

set nocp
set backspace=indent,eol,start

Speichern und beenden Sie die Datei mit

:wq

Das Ausschalten des Kompatibilitätsmodus ermöglicht die Verwendung von Pfeiltasten, an die wir alten vi-Leute gewöhnt sind.

Da wir beim Erstellen der Datei sudo'd, wird der Besitz der Datei wahrscheinlich root sein. Sie können die Datei an den Benutzer weiterleiten.

In meinem Fall war dies für einen Himbeer-Pi, also ist der Benutzer und die Gruppe pi:

chown pi:pi ~/.vimrc

Jetzt vi wieder starten und genießen!

rekursiv
quelle
1
set nocphat den Trick für mich gemacht
Louis M
2

Ich denke, der beste Weg wäre, sich das VI / VIM-Cheatsheet anzusehen: http://www.viemu.com/vi-vim-cheat-sheet.gif

Aktivieren Sie den normalen Modus (ESC) und dann UMSCHALT + X.

BlackPioter
quelle
0

einfach in dein ~/.zshrc

bindkey "^?" backward-delete-char
jhvaras
quelle