Почему команда подчеркивания _ полезна?

15

Я немного озадачен тем, почему команда подчеркивания _, которая переходит к началу (COUNT - 1)-й строки под курсором, получает свою собственную клавишу. Когда бы я использовал это, а не +или ^?

Toothrot
источник

Ответы:

16

Хороший вопрос!

Как само движение, вы правы, _не особенно полезный ключ.: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 целые строки и т. Д.

DJMcMayhem
источник
1
Хорошо, но буду ли я когда-нибудь этим пользоваться? ddлегче , чем d_и 3yjпроще , чем 4y_.
Toothrot
5
@toothrot Если вы создавали своего собственного оператора и хотели работать на следующих n строках.
DJMcMayhem
5
@ Tootrot Я думаю, я хочу уточнить это немного. В повседневном редактировании vim, нет, это действительно не особенно полезно. Я почти никогда не использовал это также. Причина в том, что это полезно, потому что это определение множества полезных команд. ddможет быть более удобным, чем d_, но это потому, что ddэто просто отображение d_. И это также полезно в vimscript.
DJMcMayhem
9
Некоторые действия, которые действуют на «движение», могут не иметь других ярлыков. Что-то вроде «gU_» будет заглавными буквами в текущей строке, даже если курсор находится не в начале строки.
BMB
1
@bmb Как насчет gUU? Я думаю, что было бы целесообразно найти фактический пример, где <operator>_будет использоваться.
Хотчке