Як видалити наступний рядок у vim?


10

У emacs, коли я хочу видалити кілька рядків тексту, я просто використовую Ck, поки весь текст не зник. Однак vim видається трохи складнішим. Я знаю, що можу зробити, d$щоб видалити до кінця рядка та ddвидалити весь рядок, на якому я перебуваю, але як видалити весь наступний рядок?

Відповіді:



16

Припущення: Ви хочете опинитися на лінії, з якої розпочали роботу.

Моя відповідь: jddk

  • j (рухається вниз)
  • dd (видаляє поточний рядок)
  • k (рухається вгору)

Спробуйте - це швидко! Насправді це два натискання клавіш менше, ніж прийнята зараз відповідь, оскільки:

  1. вам не потрібно утримувати [Shift]для введення символів двокрапки ":" і плюс "+", і
  2. вам не потрібні маються [Enter]на увазі в кінці послідовності, оскільки jddkвводиться все у візуальному режимі на відміну від командного режиму .

Крім того, jddkвсе знаходиться на домашньому рядку клавіатури.

Я багато часу використовував h, j, k, l для навігації vi, задовго до того, як програмне забезпечення для емуляції терміналу, яке я використав, почало підтримувати клавіші зі стрілками. (Я говорю про ~ 20 років тому ;-)


1
hjkl швидше все одно. Я ніколи не використовував клавіатуру, на якій не було клавіш зі стрілками, і я почав дуже цінувати ефективність цих клавішних файлів приблизно через 10 хвилин після того, як мене перестали дратувати неінтуїтивність.
інтуїтоване

4

Я настійно рекомендую прочитати цю відповідь у переповненні стеку, який отримав понад 500 відгуків: /programming/1218390/what-is-your-most-productive-shortcut-with-vim/1220118#1220118 - відповідь довгий, але допомагає зрозуміти, чому vim потужний ...


Дякуємо, що вказали на це! Дуже ретельна та змістовна відповідь про grokking vim та vi.
Кріс В. Реа

2

Вас також може зацікавити візуальний режим. Просто використовуйте vдля входу та вилучення yабо dвидалення. Перевірка :help- це чудове місце, коли ви також застрягли. Наприклад, :help deleteви дасте посібник для більшості звичайних команд видалення.


0

Якщо ви хочете видалити купу рядків підряд, ви можете ddвидалити рядок, на якому ви перебуваєте, а потім продовжуйте натискати (або утримувати) .(період), щоб повторити команду.


або введіть Ndd, де N - кількість рядків, які потрібно видалити. скажімо, для видалення поточного рядка та наступних двох рядків (всього 3) введіть 3dd
quack quixote
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.