Frage

Ich mag Leerzeilen einzufügen, ohne Insert-Modus eingeben und ich verwenden, um dieses Keymapping:

nomap go o <esc>

Dies macht die leere Zeile erstellen, aber einige seltsame Verhalten führt. Ich habe intelligenten Einzug und autoindent Satz. Die neue Linie folgt die Einzüge aber nicht entfernen Sie sie nicht, obwohl automatisch so manuell tun die redundante Leerzeichen entfernt. Es fügt auch einen einzelnen Leerzeichen, wo der Cursor jedes Mal ist.

Wer noch keine Erkenntnisse hat, wie dieses Verhalten zu erklären?

War es hilfreich?

Lösung

Vim ist sehr wörtlichen mit, wie Sie Ihre Mapping-Befehle schreiben - es ist die Verarbeitung tatsächlich den Raum in Ihrem Mapping, bevor es die tut <ESC> . Mit anderen Worten: Ihre Abbildung tut dies:

nnoremap go o<SPACE><ESC>

Sie sollten es ändern:

nnoremap go o<ESC>

Und stellen Sie sicher, Sie haben keine zusätzlichen Leerzeichen in der Abbildung!

Andere Tipps

Ich stimme mit „zu viel php“. Dies ist der entsprechende Abschnitt von meinem .vimrc

nnoremap <A-o> o<ESC>k
nnoremap <A-O> O<ESC>j

Ich denke, es schneller ist, da Sie die Cursor wieder an der ursprünglichen Linie erhalten (wenn auch nicht auf dem ursprünglichen Charakter).

Wie üblich, die vim wiki hat eine nützliche Tipp: schnell Hinzufügen und Löschen von Leerzeilen . Der Trick ist, set paste bevor die neue Linie und danach set nopaste hinzufügen. Darüber hinaus wird dies eine Markierung setzt die Cursor-Position zu erinnern und springen zurück, wo Sie waren.

nnoremap go :set paste<CR>m`o<Esc>``:set nopaste<CR>
nnoremap gO :set paste<CR>m`O<Esc>``:set nopaste<CR>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top