Rückschritt funktioniert nicht, auch nach einem Fixversuch

5541
dsg

Ich habe versucht, den Anweisungen in der Rücktaste zu folgen, die nicht in vim funktionieren, aber ich habe immer noch das gleiche Problem: BACKSPACE fügt ein^?

Das heißt: Das Einfügen set bs=indent,eol,startin mein ~/.vimrchat das Problem nicht gelöst.

Ich bin mir sicher, dass ich die richtige Quelldatei lade (ich habe einen Test einer anderen Einstellung gemacht und die Änderung weitergegeben).

Ich verwende: Vi IMproved 7.2Ubuntu mit Gnome. In der Terminalanwendung funktioniert der Rückschritt ordnungsgemäß.

6

4 Antworten auf die Frage

6
peth

Vim scheint verwirrt zu sein, was Ihr Terminal als Löschzeichen sendet. Da dies zwischen ^?( Ctrl+?oder DELfür "Löschen") und ^H( Ctrl+Hoder BSfür "Rücktaste") variiert, ist Vim darauf angewiesen, dass jemand ihm sagt, was zu erwarten ist.

Das sollte nicht passieren, wenn nicht

  • Sie ändern verwandte Einstellungen in Ihrem vimrc,
  • Sie ändern den Wert der TERMUmgebungsvariablen.
  • Ihre Terminalinformationsdatenbank ist fehlerhaft, oder
  • Sie leiden an einem Gremlin-Befall.

Versuchen Sie zur Fehlerbehebung, den Befehl auszuführen, stty erase ^?bevor Sie Vim starten, und prüfen Sie, ob dies behoben ist. Geben Sie die ^?nicht getrennt als ^und ein ?, sondern drücken Ctrl+VSie zuerst und dann Ihre BackspaceTaste. Wenn Ihre Shell sich gut benimmt, sollte dies eine wörtliche Darstellung dessen darstellen, was Ihr Terminal sendet, wenn Sie diese Taste drücken.

Danke, `stty erase ^?` Arbeitete für mich. Ich habe es meiner `.bashrc'-Datei hinzugefügt. dsg vor 13 Jahren 0
1
elcash

Wenn Sie gnome-terminal verwenden, sollte die Einstellung für die Rücktaste ^ H erfolgen. In anderen Terminalemulatoren gibt es ähnliche Einstellungen. Es ist der erste Ort, an den ich gehen würde, da es von keinem anderen erwähnt wurde.

Accessing profile in gnome-terminal

Setting backspace behavior

1
David Klann

Ich habe diese Frage bei der Suche nach etwas mildem Zusammenhang gefunden und dachte, ich würde ein pedantisches (aber möglicherweise hilfreiches) Follow-up posten.

Die meisten modernen Versionen von stty (1) (einschließlich der mit GNU Coreutils gelieferten Version) interpretieren die aus zwei Zeichen bestehenden Sequenzen ^ ?und ^ hals Steuerungssequenz ASCII DELbzw. ASCII BS. Oder generell zweistellige Zeichenfolgen, die mit ^dem entsprechenden ASCII-Steuerzeichen beginnen.

Die beiden folgenden Befehle sind also gleichwertig:

stty erase '^?' stty erase ^VDEL 
0
broomdodger

Versuchen Sie, Folgendes zu Ihrer .bashrc (oder .profile)
-Stty-Erase hinzuzufügen ^ H
Das ist das Zeichen "^" gefolgt vom Zeichen "H"
--oder--
Wenn dies nicht funktioniert, erhalten Sie das Steuerelement "^ H" -V gefolgt von Kontrolle-H

Siehe vim help
: help gui-pty-erase