Gibt es dafür einen bestimmten historischen Grund?
Hintergrund - (Sie können diesen Teil überspringen, wenn Sie die Frage bereits verstanden haben.)
Als Mittelstufe / Fortgeschrittene vi
Benutzer wissen, y
den „Ruck“ Befehl ist (Kopien) durch den folgenden Bewegungsbefehl spezifizierte den Text zerrt. * So ye
zum Ende des Wortes zerrt, y0
zerrt von Cursorposition bis zum Anfang der Zeile, y_
Ruckelt die gesamte aktuelle Zeile, y$
ruckelt von der Cursorposition bis zum Ende der aktuellen Zeile usw.
Der d
Befehl (Löschen) und der Befehl c
(Ändern) können auch für alle diese Bewegungen verwendet werden.
dd
ist ein Synonym für d_
und löscht die gesamte aktuelle Zeile. Ebenso cc
ist es ein Synonym für c_
und ändert die aktuelle Zeile (dh es löscht den gesamten Text und versetzt Sie in den Einfügemodus am Zeilenanfang). **
Der "Ruck" -Befehl folgt dieser Konvention; yy
reißt die gesamte aktuelle Zeile einfach wie y_
.
Es gibt eine weitere Gruppe von Synonymen: D
ist ein Synonym für d$
und wird von der Cursorposition bis zum Ende der Zeile gelöscht. C
ist ein Synonym für c$
und ändert den Text von der Cursorposition bis zum Zeilenende und versetzt Sie in den Einfügemodus, um den neuen Text einzugeben.
Es Y
ist jedoch ein weiteres Synonym für yy
oder y_
und zieht die gesamte Zeile , nicht nur vom Cursor bis zum Ende der Zeile, wie Sie es von den Mustern C
und erwarten würden D
.
Ich verstehe, dass es in Vim so beibehalten wurde, um die Abwärtskompatibilität zu gewährleisten vi
, wie in der Vim-Hilfe unter :help Y
:
Wenn Sie möchten, dass "Y" vom Cursor bis zum Zeilenende funktioniert (was logischer ist, aber nicht Vi-kompatibel), verwenden Sie ": map Y y $".
Das ist also ein Überbleibsel von vi
. Fein.
Aber warum war der Befehl überhaupt so konzipiert? Gab es jemals eine Logik dafür?
* Speziell platziert es den Text in Register 0 und zeigt das unbenannte Register auf Register 0.
** Obwohl es für meine Frage nicht relevant S
ist , ist es ein weiteres Synonym für cc
oder c_
.