Creo que la diferencia más importante se afirma simplemente en los archivos de ayuda:
:h $
In Visual mode the cursor goes to just after the last character in the line.
Así que si lo hace v$d se elimina incluyendo "después del último carácter", que es la nueva línea por lo que traerá la línea debajo de ella hasta la actual. Pero si lo hace vg_d mantendrá la nueva línea.
De hecho, no sabía acerca de g_
, parece útil.
Editar Dado que esta respuesta obtiene upvotes, desde entonces he utilizado g_
(y su inverso, _
) para hacer una asignación que da un tirón/borra la línea actual excluyendo líder/espacios en blanco y excluyendo los saltos de línea:
" delete/yank line, but only whitespace-trimmed version
nnoremap <Leader>dd _yg_"_dd
nnoremap <Leader>yy _yg_
... cuando desea ir al último carácter no en blanco en la línea, en caso de que la línea tenga espacios al final? –