Vim: удалить все пробелы до следующего непустого символа
Скажем, у меня есть следующий код:
<p>
Hello
</p>
И я хочу сделать это
<p>Hello</p>
Я хотел бы поместить курсор в нормальный режим в конце строки 1, так что на " > " и иметь команду удалить все пробелы до следующего символа. Ближайшим, о котором я могу думать, является движение
d/Hello
который удаляет все до Hello, но проблема в том, что он удаляет также символ под курсором ( " > " ), поэтому я заканчиваю тем, что
<pHello
</p>
Как вы это сделаете?
Ответы
Ответ 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
, вы можете пропустить часть ^.