Ответ 1
Я думаю, что самое важное отличие просто указано в файлах справки:
:h $
In Visual mode the cursor goes to just after the last character in the line.
Итак, если вы делаете v $ d, он удаляет, включая "после последнего символа", который является символом новой строки, поэтому он подведет строку под ней до текущей. Но если вы сделаете v g_ d, он сохранит новую строку.
Я действительно не знал о g_
, кажется полезным.
Изменить. Поскольку этот ответ получает upvotes, с тех пор я использовал g_
(и его reverse, _
), чтобы сделать сопоставление, которое yanks/удаляет текущую строку, исключая пробелы ведущего/конечного пробела и исключая разрывы строк:
" delete/yank line, but only whitespace-trimmed version
nnoremap <Leader>dd _yg_"_dd
nnoremap <Leader>yy _yg_