Odpowiedzi:
Dobre pytanie!
Sam ruch, masz rację, _nie jest szczególnie przydatnym kluczem.:h _
*_*
_ <underscore> [count] - 1 lines downward, on the first non-blank
character |linewise|.
Kluczowym słowem jest tutaj „linewise”. Tak więc, jeśli twoim celem jest po prostu przesunąć kursor, a następnie ^, ji +wszystko to zadanie, i nie ma sensu się _. Ale jako argument dla operatora _jest super potężny.
Wiele podwójnych skrótów klawiszowych to tak naprawdę tylko skróty _. Na przykład,
dd -> d_
cc -> c_
yy -> y_
Y -> y_
itp. Ponieważ jest to ruch liniowy, w zasadzie wybiera całą linię, na której ma być obsługiwany, niezależnie od tego, gdzie zaczyna się kursor, podczas gdy ^po prostu przechodzi od twojej postaci do pierwszego niepustego.
Pomaga mi, gdy myślę o liniach w porównaniu do ruchów blokowych, wyobrazić sobie, że naciskam jeden vlub Vtuż przed ruchem. Więc wyobrażam sobie, że jestem d^równoważny v^di wyobrażam sobie, że jestem d_równoważny z V_dlub V^d. Oczywiście można również przesłonić ruch, aby wymusić na nim liniowość lub charakter. Tak dv_jest w rzeczywistości dokładnie taka sama jak d^lub v^d, i dVwjest jak Vwdco jest dokładnie jak d_.
Powodem, dla którego jest to konkretnie „linia nr 1”, jest to, że 1dd(która jest naprawdę d1_) usuwa jedną całą linię, 2dd(która jest naprawdę d2_) usuwa 2 całe linie, 3ddusuwa 3 całe linie itp.
ddmoże być wygodniejsze niż d_, ale to dlatego, że ddjest to tylko mapowanie do d_. Jest także przydatny w vimscript.
gUU? Myślę, że warto znaleźć rzeczywisty przykład, w którym <operator>_zostałby zastosowany.
ddjest łatwiejsze niżd_i3yjjest łatwiejsze niż4y_.