Cursorposition nach dem Einfügen in vi / vim

11

Eine Sache, die mich in vi / vim immer gestört hat :

Wenn ich Text "ziehe" (auch "kopieren"), dann an eine andere Stelle in der Datei gehe und "einfüge", bleibt mein Cursor am Anfang des Textes, den ich gerade eingefügt habe. Dies unterscheidet sich von den meisten modernen Editoren, bei denen der Cursor am Ende des eingefügten Textes steht.

Angenommen, der "Kopierpuffer" enthält das Wort "awesome", das ich nach dem Wort "an" in die Phrase einfügen möchte:

This is an editor

In zum Beispiel gedit nach dem Einfügen:

This is an awesome editor
                  ^ Cursor is here

In vi :

This is an awesome editor
           ^ Cursor is here

Kann ich vi so ändern , dass es sich in dieser Hinsicht wie (zum Beispiel) gedit verhält ?

JoelFan
quelle
Was bei meiner Version von Vim noch seltsamer ist: Wenn der gezogene Text mehr als eine Zeile umfasst, bleibt der Cursor am Anfang des eingefügten Textes, andernfalls am Ende des eingefügten Textes.
Alexey
Entschuldigung, zumindest
Alexey

Antworten:

12

Verwenden Sie in vim gpund gPanstelle von pund P, um den Cursor nach dem eingefügten Text zu lassen. Wenn Sie die Bindungen austauschen möchten, fügen Sie die folgenden Zeilen in Ihre ein .vimrc:

noremap p gp
noremap P gP
noremap gp p
noremap gP P

Seltsamerweise in vim, pund Plassen Sie den Cursor auf dem zuletzt eingefügten Zeichen für einen Zeichenpuffer, auch im kompatiblen Modus.

Ich weiß nicht, wie ich das in anderen vi-Versionen ändern soll.

Gilles 'SO - hör auf böse zu sein'
quelle
1
Ich denke, "vi" ist in den meisten Distributionen normalerweise wirklich "vim", oder?
JoelFan
@ JoelFan: Die meisten nicht eingebetteten Linux-Distributionen vielleicht. Anderswo nein. Wenn Sie mit einer Nur-Vim-Lösung einverstanden sind, bringen Sie vi nicht ins Spiel: 99% der Konfigurierbarkeit von Vim ist nicht in Basic-Vi enthalten.
Gilles 'SO - hör auf böse zu sein'
Was ist mit "nvi"? Ich bin verwirrt über all die verschiedenen vi's. Ich bin hauptsächlich in Debian und Ubuntu
interessiert
1
@JoelFan: nvi ist ein ziemlich einfaches vi, es zielt auf Kompatibilität mit der ursprünglichen Implementierung ab und nicht mehr. Wenn Sie nur an Desktop-Installationen oder Servern interessiert sind, auf denen Sie Programme einfach installieren können, können Sie davon ausgehen, dass vim verfügbar ist. Die Vertrautheit mit weniger vi-Implementierungen ist nur auf gesperrten Servern und eingebetteten Geräten hilfreich.
Gilles 'SO - hör auf böse zu sein'
1
Ich benutze "vi" hauptsächlich für Server, auf denen ich Dinge installieren kann, ja
JoelFan
0

Ich bin mir ziemlich sicher, dass dies beabsichtigt ist. Wenn Sie mit "p" (Kleinbuchstaben P) einfügen, soll es nach der aktuellen Position oder Linie eingefügt werden. Wenn Sie jedoch mit "P" (Großbuchstabe P) einfügen, wird es vor der aktuellen Position oder Linie eingefügt . Wenn Sie möchten, dass sich der Cursor am Ende Ihres neu eingefügten Textes befindet, gewöhnen Sie sich an, "P" anstelle von "p" zu verwenden.

Ich wette, wenn Sie tief genug gegraben haben, könnten Sie ein vim-Rezept finden, das Sie in Ihre .vimrc einfügen können und das den Cursor immer an das Ende Ihrer Paste bewegt, selbst wenn Sie "p" verwenden.

SethG
quelle
2
PBelässt den Cursor am Anfang des eingefügten Textes in vi (zumindest in nvi und per POSIX).
Gilles 'SO - hör auf böse zu sein'
p und P beeinflussen die Position der Einfügung in Bezug auf den umgebenden Text. Sie wirken sich nicht auf die Position des Cursors selbst aus, der sich relativ zum eingefügten Text immer an derselben Position befindet.
eMBee