Der Versuch, Zeichen im Einfügemodus mit der backspaceTaste zu löschen, scheint manchmal nicht zu funktionieren. Ich kann backspace manchmal , aber manchmal tut es nichts; Der Cursor bewegt sich nicht nach links und es scheint absolut nichts zu passieren.
Ich habe das mit gVim in Windows bemerkt. Das backspacescheint bei der Verwendung von Vim vom Terminal in den meisten Linux-Systemen jedoch wie erwartet zu funktionieren.
- Warum passiert das?
- Wie kann ich die backspaceTaste wie gewohnt zum Löschen von Zeichen bringen?
- Ist dieses Verhalten als Feature gedacht? Mit anderen Worten: Gibt es bessere Alternativen backspacezum Löschen von Zeichen im Einfügemodus?
insert-mode
glS
quelle
quelle
X
(und das Löschen mitx
) ausgeführt. Oft wollten Sie jedoch nurdb
das Löschen bis zum Wortanfang oderdaw
das Löschen des gesamten Wortes usw. ausführen. Wenn Sie die Rücktaste verwenden, riskieren Sie dies suboptimaler Schlüssel in mehr Fällen als notwendig.J
Leerzeichen verwendet werden. Kurz gesagt, die Rücktaste ist in Ordnung, um Tippfehler während des Schreibens schnell zu beheben. Ansonsten gibt es bessere Alternativen.:h vim-faq
und suchen/backspace
. Das schwer zu merkende Tag ist:h faq-12.26
.Antworten:
tl; dr: Fügen Sie dies zu Ihrem vimrc hinzu, damit die Rücktaste wie in den meisten anderen Programmen funktioniert:
Längere Antwort
Auch wenn das Standardverhalten überraschend sein mag, kann die Rücktaste "funktioniert nicht" als Feature betrachtet werden . Dies kann verhindern, dass Sie versehentlich Einrückungen entfernen und zu viel Text entfernen, indem Sie ihn auf die aktuelle Zeile und / oder den Anfang der Einfügung beschränken.
:help 'backspace'
sagt uns:Was bedeuten diese Werte genau?
Einzug
Vim fügt für viele Dateitypen einen automatischen Einzug hinzu. Standardmäßig dürfen Sie darüber keine Rücktaste drücken. Die Regeln für das, was als "Autoindentation" bezeichnet wird, sind etwas subtil, wenn wir beispielsweise Folgendes eingeben würden (wobei █ der Cursor ist):
Backspacing funktioniert nicht.
Aber wenn wir dann einen Befehl hinzufügen , und die
fi
, und gehen wieder nach oben, wir sind die Vertiefung zu entfernen erlaubt:Dies liegt daran, dass Vim im ersten Beispiel festgelegt hat, dass 1 Einrückungsstufe hinzugefügt werden soll, wenn Sie die Eingabetaste gedrückt haben. aber im zweiten Beispiel hat Vim nichts automatisch eingezogen, es sind nur Tabulatorzeichen oder ein paar Leerzeichen.
Siehe auch
:help 'autoindent'
eol
Dies sollte am offensichtlichsten sein. Durch Drücken der Rücktaste werden auch die EOL-Markierungen (
\n
oder\r\n
) entfernt. Wenn diese Option deaktiviert ist, führt die Rücktaste nichts aus, wenn Sie versuchen, einen EOL-Marker zu löschen.start
Das heißt, Sie können nur Text löschen, den Sie seit dem Start des Einfügemodus eingefügt haben, und Sie können keinen Text löschen, der zuvor eingefügt wurde.
Also, was ist die Standardeinstellung?
Der Grund dafür ist, dass viele Linux-Distributionen vorgefertigte vimrc-Dateien enthalten, die einige allgemeine Optionen festlegen. Zum Beispiel auf meinem Arch Linux System
/usr/share/vim/vimfiles/archlinux.vim
mit:Wenn Sie Vim unter Windows installieren, wird standardmäßig das Standard-Vimrc und -gvimrc verwendet, mit denen Vim ausgeliefert wird.
Der Vim- Standardwert ist ein leerer Wert für
backspace
. Das Arch Linux, Debian, CentOS oder die$other_distro
Standardeinstellung können unterschiedlich sein.Normaler Modus
Bei dieser Frage geht es um die Rücktaste im Einfügemodus, aber lassen Sie mich auch einige kurze Bemerkungen zur Rücktaste im normalen Modus hinzufügen.
Im normalen Modus verhält sich die Rücktaste so
h
, als würde sie nur nach links gehen.Standardmäßig springt die Rücktaste zum Anfang einer Zeile (als wäre sie
eol
inbackspace
). Sie können dieses Verhalten mit der'whichwrap'
Option über dasb
Flag steuern (standardmäßig aktiviert).Sie können die Rücktaste auch zum Löschen von Zeichen verwenden, indem Sie sie dem
X
Befehl zuordnen:quelle
"_X
wäre "natürlicheres" Verhalten für<BS>
.Nur für den Fall, dass bei der
<BS>
Verwendung von ConEmu unter Windows Probleme auftreten, müssen Sie den<BS>
Schlüssel möglicherweise neu zuordnen für:Mehr Informationen
quelle
wird mit v5.4 und früher verwendet. arbeitete für mich auf dem Mac.
sieht aus wie auf dem Mac, den ich v3.2 habe:
Alle Versionen nach 3.2 verwenden die GNU General Public License v3 (GPLv3), die Apple nicht unterstützt. Eine Diskussion darüber gibt es hier .
Sie können auf den neuesten Bash upgraden mit:
Dies ermöglicht es, die hier hervorgehobene programmierbare Vervollständigung zu nutzen .
quelle
Wenn dies
set backspace=indent,eol,start
Ihre letzte Zeile istvimrc
, funktioniert keine der Lösungen.Fügen Sie danach eine weitere Regel hinzu, zB:
quelle