Чому "Оператор" + "Рух" поводяться непослідовно?


17

Це те, що мене давно клопоче, але мені ніколи не доводилося питати. Скажіть, текст у буфері виглядає так:

Hello
World

Якщо я кладу курсор кудись у рядок 2, і роблю yk, мій курсор закінчиться на рядку 1. Це, мабуть, означає, що оператор плюс рух також переміщує курсор. Однак якщо я починаю з першого рядка і роблю yj, мій курсор залишається на тому ж місці. Така ж невідповідність трапляється і з великою кількістю клавіш.

Moves   Doesn't move
gg      G
h       l
{       }
(       )
T       t
F       f
?       /

То що з такою поведінкою? Це очікувано і добре зафіксовано? Чи є для цього назва? Чи можна його відмінити?

Загалом, схоже на те, що "Назад рухається, не йде вперед", але чи є спосіб, який я можу остаточно сказати, чи перемістить курсор чи ні оператор + рух?


2
yє оператором, а не командою.
romainl

Відповіді:


16

З :h operator

Після застосування оператора курсор в основному залишається на початку тексту, яким керували. Наприклад, "yfe" не переміщує курсор, але "yFe" переміщує курсор вліво до "e", звідки почався yank.

Що відбувається, це те, що курсор переміщується на початок текстового об’єкта. Увімкнення візуального режиму зробить це більш очевидним. Ви можете думати про це, як текст вибирається перед тим, як над ним працювати. Використовуйте, vbyщоб побачити, що я маю на увазі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.