Відповіді:
"dap" насправді не видаляє все. Наприклад, спробуйте вставити це у свій буфер:
1
1
2
2
3
3
Потім поставте курсор або на "2" і введіть "dap". Це залишить '1 та 3'.
Це тому, що "dap" видаляє абзац . Насправді це насправді мнемонічне: "(D) elete (A) (P) араграф". Ви можете побачити його в довідці під :h ap
:
*v_ap* *ap*
ap "a paragraph", select [count] paragraphs (see
|paragraph|).
Exception: a blank line (only containing white space)
is also a paragraph boundary.
When used in Visual mode it is made linewise.
Це називається "текстовим об'єктом". Ви можете прочитати про них у розділі: :h text-objects
або ви можете прочитати цю дивовижну статтю про текстові об’єкти.
У будь-якому випадку, основна ідея текстових об'єктів полягає в тому, що ви визначаєте межі об'єкта, а потім застосовуєте команди до цього всього об'єкта, навіть коли ви знаходитесь в його середині. Наприклад, я впевнений, що ви знаєте, що ви можете використовувати dw
для видалення слова. Але що робити, якщо ви за цим сценарієм?
Hello world
Cursor: ^
Якщо ви введете dw
, у вас залишиться wo
ліворуч. Якщо ви введете diw
, це видалить усередині слова , то здебільшого це еквівалентно набору тексту bdw
.
Як я можу дізнатися подібну річ для себе?
У вас виникла основна ідея! Перевірка допомоги - це завжди вдалий початок. У цьому випадку ви могли зрозуміти, що d
це оператор, тому допомога, яку ви справді шукали, була аргументом для оператора, в цьому випадку ap
.
diw
і bde
досі не зовсім однакові: якщо ваш курсор на початку слова. Так само, якщо ваш курсор знаходиться на пробілі між словами, то bdw
видалить слово зліва, а справа daw
видалить слово. Я думаю, що оригінальна відповідь "здебільшого ..." - це, мабуть, найкраще, що ми отримаємо з точки зору цих еквівалентів.