2012-01-13 4 views
12

Say У меня есть следующий код:ВИМ: не удалить все пустое пространство до следующего непустого символа

<p> 
    Hello 
</p> 

И я хочу, чтобы сделать его

<p>Hello</p> 

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

d/Hello 

, который удаляет все, пока Hello но проблема в том, что он удаляет также символ под курсором («>»), так что я в конечном итоге с

<pHello 
</p> 

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

+3

Перед тем, как голосовать, пожалуйста, прочтите следующее: [Vim Questions: SO или SU] (http://meta.stackexchange.com/questions/25925/vim-questions-so-or-su) –

ответ

16

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

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. 
+0

Мне нужно сделать это много раз и попытаться повторить действие через '.', но это только повторяет' x' не 'J'. Не могли бы вы добавить пример, если нужно повторить это несколько раз? – k0pernikus

6

Там в tag текстовом объекте в Vim:

  • положить курсор внутри тега, нажмите чан выбрать Целый тег
  • пресс :, становится :'<,'>
  • типа 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. 
+2

'vatJ' будет получите те же результаты. – Kambus

+3

Это фактически не отвечает на вопрос из-за пробелов, добавленных ': join'. –

1

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

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

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

Смежные вопросы