Isso não é um bug, mas um comportamento explicitamente programado.
Se você olhar para kill.c - & gt ; rl_yank (): 512
/* Yank back the last killed text. This ignores arguments. */
int
rl_yank (count, ignore)
int count, ignore;
{
if (rl_kill_ring == 0)
{
_rl_abort_internal ();
return 1;
}
_rl_set_mark_at_pos (rl_point);
rl_insert_text (rl_kill_ring[rl_kill_index]);
return 0;
}
Você pode ver que ele redefine explicitamente a marca para o ponto atual, antes de inserir o texto do anel kill.
O mesmo se aplica aos outros métodos yank *.
Isto não está realmente bem documentado, mas eu suponho que isto é para que você possa retornar ao ponto original, após inserir um texto de um comprimento desconhecido.