Jestem nieco zdziwiony, dlaczego polecenie podkreślenia _
, które przeskakuje na początek (COUNT - 1) linii poniżej kursora, dostaje swój własny klucz. Kiedy powinienem użyć tego zamiast +
lub ^
?
źródło
Jestem nieco zdziwiony, dlaczego polecenie podkreślenia _
, które przeskakuje na początek (COUNT - 1) linii poniżej kursora, dostaje swój własny klucz. Kiedy powinienem użyć tego zamiast +
lub ^
?
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 ^
, j
i +
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 v
lub V
tuż przed ruchem. Więc wyobrażam sobie, że jestem d^
równoważny v^d
i wyobrażam sobie, że jestem d_
równoważny z V_d
lub 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 dVw
jest jak Vwd
co 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, 3dd
usuwa 3 całe linie itp.
dd
jest łatwiejsze niżd_
i3yj
jest łatwiejsze niż4y_
.dd
może być wygodniejsze niżd_
, ale to dlatego, żedd
jest to tylko mapowanie dod_
. Jest także przydatny w vimscript.gUU
? Myślę, że warto znaleźć rzeczywisty przykład, w którym<operator>_
zostałby zastosowany.