Existe uma razão histórica específica para isso?
Plano de fundo - (você pode pular esta parte se já entender a pergunta.)
Como viusuários intermediários / avançados saberão, yé o comando "puxar" - puxa (copia) o texto especificado pelo seguinte comando de movimento. * Assim, yepuxa para o final da palavra, y0puxa da posição do cursor para o início da linha, y_puxa toda a linha atual, y$puxa da posição do cursor até o final da linha atual, etc.
O dcomando (delete) e o comando c(change) também podem ser usados com todos esses movimentos.
ddé um sinônimo d_e exclui toda a linha atual. Da mesma forma, ccé sinônimo c_e alterará a linha atual (ou seja, excluirá todo o texto e o colocará no modo de inserção no início da linha). **
O comando "yank" segue esta convenção; yypuxará toda a linha atual exatamente como y_.
Há outro conjunto de sinônimos: Dé um sinônimo d$e será excluído da posição do cursor até o final da linha. Cé um sinônimo c$e mudará o texto da posição do cursor para o final da linha, colocando você no modo de inserção para digitar o novo texto.
No entanto, Yé outro sinônimo para yyor y_e puxará a linha inteira , não apenas do cursor até o final da linha, como seria de esperar dos padrões Ce D.
Entendo que no Vim foi mantido dessa maneira para preservar a compatibilidade com versões anteriores vi, conforme mencionado na ajuda do Vim em :help Y:
Se você deseja que "Y" trabalhe do cursor até o final da linha (que é mais lógico, mas não compatível com o Vi), use ": map Y y $".
Portanto, esta é uma ressaca de vi. Bem.
Mas, por que o comando foi projetado dessa maneira em primeiro lugar? Havia alguma lógica nisso alguma vez?
* Especificamente, coloca o texto no registro 0 e aponta o registro sem nome no registro 0.
** Embora não seja relevante para a minha pergunta, Sé outro sinônimo para ccor c_.