Die Rücktaste im Einfügemodus in vi löscht das Zeichen nicht


70

Ich bin neu in vi, eigentlich habe ich angefangen, vi von heute an zu lernen, und ich bin beim Verhalten der Rücktaste hängen geblieben.

Eigentlich funktionierte meine Backspace-Taste normal, als ich vi auf meinem Ubuntu 12.04 zum ersten Mal startete, aber danach hat sie sich merkwürdig verhalten. Jedes Mal, wenn ich im Einfügemodus die Rücktaste drücke, wird das Zeichen nur um eine Stelle nach links verschoben, anstatt es zu löschen.

Wie kann ich die Standard-Backspace-Funktionalität wiederherstellen? Bitte beachten Sie, dass ich vim nicht installieren oder keine Kompatibilität festlegen möchte.

Antworten:


39

Das ist das richtige Verhalten für vi und löscht das Zeichen. Es zeigt es nur nicht an, indem es durch ein Leerzeichen wie in vim ersetzt wird. Es wird sichtbar, wenn Sie das gelöschte Zeichen mit einem anderen Zeichen überschreiben oder zurück in den Befehlsmodus wechseln.

Beginnt man beispielsweise mit dem Befehlsmodus in einer leeren Zeile, so enthält die folgende Zeile fo:

ifooBackspaceEsc

Bevor Sie die EscTaste drücken, wird in der Zeile angezeigt foo, aber die letzte owurde als "Löschspalte" markiert. Siehe http://pubs.opengroup.org/onlinepubs/9699919799/utilities/vi.html#tag_20_152_13_88 (hauptsächlich Punkt 4 unter dieser Überschrift).


73

Hier ist die einfachste Lösung.
Öffnen Sie ein Terminal, wechseln Sie in das Ausgangsverzeichnis und geben Sie Folgendes ein

vi .vimrc

Wenn Sie eine neue Datei öffnen, fügen Sie diese Zeilen der Datei hinzu und beenden Sie sie durch Speichern

$ set nocompatible
$ set backspace=2

9
Die OP erwähnte, dass sie nicht verwenden wollennocompatibility
kiri

1
Es gibt keine Notwendigkeit für Kompatibilität und Sie können dies auch tun, indem Sie die zweite Zeile
hinzufügen

1
Die zweite Zeile funktioniert bei mir nur, wenn ich auch die erste Zeile hinzufüge.
Djjeck

Ich ging von einer leeren .vimrc-Datei aus und fragte mich, warum die Rücktaste auf einem Mac in iTerm2 nicht funktionierte. Danke vielmals!
Igor Malyk

@ minerz029 füge noch hinzu, dies ist die Antwort, für die die meisten Leute hier sind, da es keine solche Qualifikation im Seitentitel gab.
Muhd

23

Sie müssen in den Einfügemodus wechseln, indem Sie den Cursor mit bewegen i. Es gibt andere Möglichkeiten, Zeichen direkt zu löschen. Sie können eine Powerpoint herunterladen , die ich benutze , wenn eine Klasse auf VI lehren hier .

Es hört sich so an, als ob Sie sich im "Command" -Modus befinden. So bewegen Sie den Cursor:
H= Nach links, J= Nach oben, K= Nach unten, L= Nach rechts

Sobald Sie Ihren Cursor positioniert haben Sie löschen Text wie folgt:
x Löscht das Zeichen unter dem Cursor
X das Zeichen löscht , bevor der Cursor
dwaus dem Cursor Löscht zum nächsten Wort
dd Löscht die Zeile der Cursor befindet.

Zur Texteingabe können Sie einen der Texteingabemodi verwenden.
aFügt Text an den rechten der Cursor
Afügt Text zum Ende der aktuellen Zeile
iFügt Text in die links vom Cursor
ITest zum fügt Beginin der aktuellen Zeile
oöffnet eine neue Zeile unterhalb der aktuellen Zeile und Orte , die Sie im Texteingabemodus
Oöffnet eine neue Zeile Über der aktuellen Zeile und versetzt Sie in den Texteingabemodus

Verwenden Sie, um den Texteingabemodus zu beenden und zum Befehlsmodus zurückzukehren Esc.

So machen Sie Änderungen rückgängig : (Ein Schülerfavorit)
uMachen Sie den zuletzt eingegebenen Befehl
U rückgängig. Machen Sie alle Änderungen an der ** aktuellen Zeile ** rückgängig.

Zum Speichern / Beenden: :wSchreibt (Speichert) die Datei und bleibt offen
:wqWrites (Speichert) die Datei und verlässt VI
:qQuits (Exits) , wenn Sie keine Änderungen vorgenommen haben
:q! wird beendet (Exits) , ohne zu speichern Änderungen
ZZWrites (Speichert) die Datei und verlässt VI (wie :wq)


11
Das OP erwähnte, dass das mysteriöse Verhalten im Einfügemodus auftritt . Das ist also nicht die Antwort auf die gestellte Frage.
LarsH

Eigentlich hat das OP im Einfügemodus nicht gestanden . Die Frage wurde bearbeitet.
Argusvision

1
Okay. Du hast Recht. Es sieht so aus, als hätte ich eine Annahme gemacht. Ich habe die Erfahrung gemacht, dass die meisten VI-Neulinge Probleme beim Wechseln des Modus und beim Navigieren im Befehlsmodus haben. Meine Schüler beschweren sich häufig und geben VI die Schuld für ein unberechenbares Verhalten, wenn es sich lediglich um einen Benutzerfehler handelt oder wenn sie den Befehlssatz nicht verstehen.
Argusvision

1
Verständlich. Ich bin damit einverstanden, dass dies die übliche Reaktion auf den Non-Insert-Modus ist.
LarsH

Argus, "im Einfügemodus", wurde dem Fragentitel in einer Bearbeitung hinzugefügt, befand sich jedoch von Anfang an im Hauptteil der Frage.
LarsH

13

Installieren Sie das vollständige vim-Paket, um die Funktionen für die Rücktaste und die Pfeiltasten zu erhalten

sudo apt-get update
sudo apt-get install vim

Es funktioniert wie erwartet .. Beste Antwort
Vicky

Das ist die perfekte Antwort. Sie müssen keine Konfigurationsdateien bearbeiten, nur das vim-runtimePaket installieren und alles funktioniert so, wie ich es gewohnt bin. Vielen Dank!
Olli D-Metz
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.