Ответы:
Хороший вопрос!
Как само движение, вы правы, _не особенно полезный ключ.:h _
*_*
_ <underscore> [count] - 1 lines downward, on the first non-blank
character |linewise|.
Ключевое слово здесь "linewise". Поэтому, если ваша цель - просто переместить курсор, тогда ^, jи +все выполнят свою работу, и в этом нет особого смысла _. Но как аргумент оператора, _это супер мощный.
Многие сочетания клавиш на самом деле просто ярлыки для _. Например,
dd -> d_
cc -> c_
yy -> y_
Y -> y_
и т. д. Поскольку это движение по линии, оно в основном выбирает всю строку, с которой нужно работать, независимо от того, где начинается курсор, а ^просто переходит от вашего персонажа к первому непустому.
Когда я думаю о движениях против движения блоков, мне помогает представить, что я нажимаю vили Vпрямо перед движением. Итак, я представляю, d^чтобы быть эквивалентным, v^dи я представляю, d_чтобы быть эквивалентным V_dили V^d. Конечно, вы также можете переопределить движение, чтобы оно было аналогичным или символьным. Так dv_что на самом деле точно так же, как d^или v^d, и dVwэто похоже на Vwdточно так же, как d_.
Причина, по которой это именно строка «count-1th», заключается в том, что 1dd(что действительно d1_) удаляет одну целую строку, 2dd(что действительно d2_) удаляет 2 целые строки, 3ddудаляет 3 целые строки и т. Д.
ddможет быть более удобным, чем d_, но это потому, что ddэто просто отображение d_. И это также полезно в vimscript.
gUU? Я думаю, что было бы целесообразно найти фактический пример, где <operator>_будет использоваться.
ddлегче , чемd_и3yjпроще , чем4y_.