Der Löschschlüssel funktioniert in vim auf iTerm2 nicht

16

Erstens habe ich im Einfügemodus etwas eingegeben, wie z

Hello

Wenn ich in diesem Stadium den Einfügemodus nicht verlassen habe, deletefunktioniert dies und kann das gesamte Wort löschen, wenn ich möchte.

Wenn ich den Einfügemodus beende und den Einfügemodus erneut öffne, Hellokann dies nicht von entfernt werden delete. Der neu eingegebene Inhalt kann jedoch entfernt werden.

Ich habe meine .vimrc umbenannt, das Problem besteht immer noch.

Und ich habe einige Tests auf einem Remote-Server über iterm durchgeführt und bin nicht auf dasselbe Problem gestoßen.

Was könnte die Ursache für dieses Problem sein? Wie man es repariert?

Zen
quelle
Mit "Löschen" meinen Sie die Rücktaste? Das Entfernen ganzer Wörter im Einfügemodus ist möglich Ctrl-W. Versuchen Sie das. Wenn das nichts bringt, stimmt etwas nicht mit Ihrem Vim. Ich benutze iTerm 2 und hatte noch nie solche Probleme.
Oarfish
Ja, ich kann im normalen Modus dwoder dw+ verwenden shift, um Wörter zu löschen. Aber backspaceund ctrl+ wbeide funktionieren nicht in der zweiten Situation, die ich oben erwähnt habe.
Zen
Aber Sie können die Rücktaste in der normalen Befehlszeile außerhalb von vim verwenden? Sehr merkwürdig.
Oarfish
@oarfish, ja, ich kann, und in Remote Server Vim habe ich kein solches Problem, alles passiert plötzlich. Ich kann den Hinweis vorerst nicht verstehen.
Zen
Welche Vim-Version hast du? Ich habe vim 7.4.481 und kann das Problem nicht reproduzieren.
Januar

Antworten:

16

Dies ist eine Funktion von vim, obwohl IIRC standardmäßig nicht aktiviert ist.

backspaceeine Einstellung in vim ist, und Sie drei verschiedene Parameter einstellen: indent, eolundstart

Wenn Sie laufen :help backspace, wird es Ihnen sagen:

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.

Derjenige, der nicht für Sie eingestellt ist, ist start.

Wenn Sie set backspace=indent,eol,startIhrer .vimrc hinzufügen , können Sie im Einfügemodus eine Rücktaste über alles setzen.

Jay Thompson
quelle
"feature" ... Aus irgendeinem Grund ist es auf einem neuen macOS 10.13 mit einer neuesten Brew-Installation von vim standardmäßig aktiviert. Diese Lösung behebt das Problem weiterhin.
Taylor Edmiston
9

Ich hatte auch dies, die Standardwerte für die natürliche Textverarbeitung waren für mich falsch.

  • MacBook Pro (15 Zoll, 2018)
  • 10.14.3 (Mojave)
  • Iterm2 3.2.7

Gehen Sie zu Preferences > Profiles > Keysund laden Sie die Standardvoreinstellung Natural Text Editingund löschen Sie alle Einträge, die sich mit deleteund deleteVerhalten befassen . Danach funktioniert es wie erwartet.

Salyangoz
quelle
1
Das Gleiche, außer dass ich gerade die Einträge zu "Del->" entfernt habe, aber keine "Sends ^ H" -Bindung hinzugefügt habe. Dann hat es wie erwartet funktioniert.
DagW
@DagW bestätigt, die ^ H-Bindung ist nicht erforderlich.
Salyangoz
2
Musste zu tief in falsche Beiträge graben, um dies als die richtige Antwort zu finden, vielen Dank!
RecuencoJones
1
Ich hatte das Problem auf meinem Tmux und Iterm2 für lange Zeit, ich finde keine Lösung, bis ich Ihren Beitrag hier gefunden habe.
1234
1
Ja! Hier geht es um die iterm-Konfiguration, nicht um vim selbst.
Rodrirokr