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 viBenutzer wissen, yden „Ruck“ Befehl ist (Kopien) durch den folgenden Bewegungsbefehl spezifizierte den Text zerrt. * So yezum Ende des Wortes zerrt, y0zerrt 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 dBefehl (Löschen) und der Befehl c(Ändern) können auch für alle diese Bewegungen verwendet werden.
ddist ein Synonym für d_und löscht die gesamte aktuelle Zeile. Ebenso ccist 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; yyreißt die gesamte aktuelle Zeile einfach wie y_.
Es gibt eine weitere Gruppe von Synonymen: Dist ein Synonym für d$und wird von der Cursorposition bis zum Ende der Zeile gelöscht. Cist 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 Yist jedoch ein weiteres Synonym für yyoder y_und zieht die gesamte Zeile , nicht nur vom Cursor bis zum Ende der Zeile, wie Sie es von den Mustern Cund 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 Sist , ist es ein weiteres Synonym für ccoder c_.