vim: удалить все пробелы до следующего непустого символа - PullRequest
13 голосов
/ 13 января 2012

Скажем, у меня есть следующий код:

<p>
    Hello
</p>

И я хочу сделать это

<p>Hello</p>

Я бы хотел поставить курсор в нормальном режиме в конце строки 1, поэтому на «>» и есть команда, чтобы удалить все пробелы до следующего символа.Самое близкое, о чем я могу подумать, это движение

d/Hello

, которое удаляет все до Hello, но проблема в том, что он удаляет также символ под курсором ('>'), поэтому я получаю

<pHello
</p>

Как бы вы это сделали?

Ответы [ 3 ]

17 голосов
/ 13 января 2012

Один способ, когда вам не нужно будет повторять это действие много раз.

JxJx

Объяснение:

J           # Join current line with next one but substitute end of line with a space.
x           # Remove the space.
Jx          # Repeat same process for last line.
6 голосов
/ 13 января 2012

В vim есть текстовый объект tag:

  • , поместите курсор в тег, нажмите НДС , чтобы выбрать весь тег
  • нажмите : , становится :'<,'>
  • тип j , становится :'<,'>j
  • нажмите Введите , чтобы присоединиться к линиям

:help v_at

at          "a tag block", select [count] tag blocks, from the
            [count]'th unmatched "<aaa>" backwards to the matching
            "</aaa>", including the "<aaa>" and "</aaa>".
            See |tag-blocks| about the details.
            When used in Visual mode it is made characterwise.
1 голос
/ 14 января 2012

Когда вы стоите где-нибудь во второй строке (та, которая говорит Hello), нажмите следующие клавиши: ^d0vatgJ. Просто объяснил:

  1. ^ перейдет к первому непробельному символу, H
  2. d 0 удалит в начало строки
  3. v a t выделит весь тег
  4. g J объединит все строки без пробелов

Если вы начинаете с H, вы можете пропустить ^ .

...