Я немного озадачен тем, почему команда подчеркивания _
, которая переходит к началу (COUNT - 1)-й строки под курсором, получает свою собственную клавишу. Когда бы я использовал это, а не +
или ^
?
источник
Я немного озадачен тем, почему команда подчеркивания _
, которая переходит к началу (COUNT - 1)-й строки под курсором, получает свою собственную клавишу. Когда бы я использовал это, а не +
или ^
?
Хороший вопрос!
Как само движение, вы правы, _
не особенно полезный ключ.: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_
и3yj
проще , чем4y_
.dd
может быть более удобным, чемd_
, но это потому, чтоdd
это просто отображениеd_
. И это также полезно в vimscript.gUU
? Я думаю, что было бы целесообразно найти фактический пример, где<operator>_
будет использоваться.