Ich habe festgestellt, dass sich der Cursor beim Bearbeiten entlang einer Zeile in einer TXT-Datei im Einfügemodus nach einem Schreibvorgang mit der Tastenfolge an den Zeilenanfang bewegt:
<esc>:w
Ich möchte dieses Verhalten so ändern, dass der Cursor nach einem: Schreiben in Position bleibt. Ist das möglich? Ich brauche den Cursor nicht, um im Einfügemodus zu bleiben. Ich möchte nur, dass er nach einem Schreibvorgang seine letzte Position beibehält.
Ich verwende gVim 7.4 unter Windows. Meine .vimrc ist sehr einfach, ich glaube nicht, dass eine meiner Einstellungen dieses Verhalten stört. Ich habe auch die Beschaffung von mswin.vim und example.vim aus meiner .vimrc entfernt (im Lieferumfang des offiziellen Windows-Installationsprogramms von vim.org enthalten).
Nachdem ich die folgenden Kommentare gelesen hatte, sah ich mir das Problem noch einmal an und stellte fest, dass der Cursor nach einem Schreiben in Zeilen, die vollständig aus nachgestellten Leerzeichen bestehen, nur ganz nach links gleitet. Mit anderen Worten, der Cursor bewegt sich nur dann nach links, wenn die Zeile ein hängender Einzug ist, in dem außer Leerzeichen keine anderen Zeichen stehen . Die .vimrc verarbeitet Einrückungsverhalten mit den folgenden Einstellungen:
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
set autoindent
Eine neue Zeile, die unter einer eingerückten Zeile erstellt wird, enthält 4 nachgestellte Leerzeichen als die ersten 4 Leerzeichen der Zeile (die ich beibehalten möchte). Wenn Sie die Esc-Taste drücken, bewegt sich der Cursor ganz links neben den Puffer.
Gibt es eine Möglichkeit, die Cursorposition beim Drücken von 'esc' beizubehalten, um zum normalen Modus zurückzukehren, und zwar auf einer Linie aus nachgestellten Leerzeichen (als Einrückung)?
gvim -u NONE -U NONE
(Sie können entweder cmd.exe verwenden oder eine Verknüpfung erstellen )? Dies verhindert das Laden Ihrer (g) vimrc-Dateien.Antworten:
In der Dokumentation zu autoindent finden Sie eine Antwort darauf, warum und wie Sie das Problem umgehen können.
:help 'autoindent'
::Mit anderen Worten, wenn Sie möchten, dass der Einzug nicht verloren geht, geben Sie etwas ein und drücken Sie die Rücktaste, bevor Sie ihn treffen Esc. Das führende Leerzeichen bleibt erhalten.
Wenn Sie alternativ nur wieder auf der Einrückungsstufe sein möchten, wenn Sie in den Einfügemodus zurückkehren und diese ebenfalls verwenden
'cindent'
, verwenden Sie Shift-Sstattdessen anstelle von i, wodurch die (bereits leere) Zeile gelöscht wird, und beginnen Sie mit der entsprechenden Einrückungsstufe. Dies ist keine so allgemeine Lösung wie die oben beschriebene, aber ich bevorzuge dies, wenn ich C-Code schreibe, damit meine Dateien nicht nur mit Leerzeichen gespeichert werden.quelle
nnoremap o o <BS><Esc><DEL>
, undnnoremap O O <BS><Esc><DEL>