Что делает движение подчеркивания в vim?

11

Я не понимаю движение подчеркивания в vim, по крайней мере, в контексте yank (y). Мой шпаргалка читает

"soft" bol down

который я не понимаю. Если я использую только движение, оно кажется таким же, как и ^переход к первому непробельному пространству в строке. Тем не менее, если я использую движение с yтогда, оно вытягивает всю строку (например, yy или Y), но y^не вытягивает всю строку, а только к первому непробельному символу, исключающему, как вы могли ожидать.

Итак, что именно должен делать знак подчеркивания?

Тайлер Дурден
источник

Ответы:

14

Без подсчета ^и _в самом деле эквивалентны, но последний поддерживает подсчет:

  _  <underscore>         [count] - 1 lines downward, on the first non-blank
                          character |linewise|.

Это linewiseобъясняет ваше второе наблюдение: при использовании в качестве движения оно охватывает не только текст между предыдущей и новой позициями, но и весь набор охваченных линий.

Внимательное прочтение :helpпредоставляет эти идеи. Вы также увидите (по близости), что _команда тесно связана с +и -.

Инго Каркат
источник
Хммм, хорошо, тогда в чем разница между y2_ и y2 +?
Тайлер Дерден
2
@TylerDurden Разница составляет 1 (строка), так же как и разница между [count] - 1и [count]для любого значения [count]. Как уже упоминал Инго, было бы полезно прочитать встроенную справку vim, что вполне понятно.
jw013
4
Почему _команда существует - почему кто-то предпочел бы ее +?
Аарон Тома
Не спорю, но помощь немного сбивает с толку. [count] - 1 lines downward- Мне кажется, что вместо правильной интерпретации это означает «считать: 1 строчка вниз». Я знаю, даже не имеет большого смысла, но там есть небольшая путаница.
Андре Шалелья