Чому корисна команда підкреслення _ корисна?


15

Мене трохи спантеличено, чому команда підкреслення _, яка переходить на початок (COUNT - 1) -го рядка під курсором, отримує власний ключ. Коли я використовую це, а не +або ^?

Відповіді:


16

Гарне питання!

Оскільки рух сам по собі, ти маєш рацію, _не є особливо корисним ключем.:h _

                            *_*
_  <underscore>     [count] - 1 lines downward, on the first non-blank
            character |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_.

Причина, що саме "рядок-1" рядок, полягає в тому, що 1dd(що насправді d1_) видаляється один цілий рядок, 2dd(який є насправді d2_) видаляється 2 цілих рядка, 3ddвидаляється 3 цілих рядка і т.д.


1
Гаразд, але я б коли-небудь насправді ним користувався? ddлегше d_і 3yjлегше, ніж 4y_.
Зубник

5
@toothrot Якщо ви створювали власного оператора і хотіли працювати в наступних n рядках.
Джеймс

5
@Toothrot Я думаю, я хочу це трохи уточнити. Щоденне редагування vim, ні, це насправді не особливо корисно. Я його майже ніколи не використовував. Причина корисна в тому, що це визначення безлічі корисних команд. ddможе бути зручнішим ніж d_, але це тому, що ddце лише відображення d_. І це також корисно в vimscript.
Джеймс

9
Деякі дії, які діють на "рух", можуть не мати інших ярликів. Щось на кшталт "gU_" буде замінювати великі літери у поточному рядку, навіть якщо курсор не знаходиться на початку рядка.
bmb

1
@bmb Про що gUU? Я думаю, що варто було б знайти фактичний приклад, де він <operator>_би використовувався.
Хоцке
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.