Подтвердить что ты не робот

Vim: удалить все пробелы до следующего непустого символа

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

<p>
    Hello
</p>

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

<p>Hello</p>

Я хотел бы поместить курсор в нормальный режим в конце строки 1, так что на " > " и иметь команду удалить все пробелы до следующего символа. Ближайшим, о котором я могу думать, является движение

d/Hello

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

<pHello
</p>

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

4b9b3361

Ответ 1

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

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.

Ответ 2

Там tag текстовый объект в vim:

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

: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.

Ответ 3

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

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

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