2013-12-14 1 views
1

поэтому я продолжаю мое использование от ВИМ ... У меня есть этот кусок HTML здесь:Использование Vim вырезать и вставить элемент и переместить его на другую линию эффективно

<div id=container> 
    <ol> 
     <li><h1>banner</h1></li> 
     <li><first_item</li> 
     <li><second_item</li> 
     <li><third_item</li> 
     <li><fourth_item</li> 
</div> 

DIV тег начинается на 17-я линия. Я пошел, чтобы переместить заголовок один из списка, но все еще в теге div. Мои движения были:

  1. 19gg (перейти на 19-й линии)
  2. дд (это удалить строку, но я вижу, это то же самое, как сокращение линии, а)
  3. 17gg (перейти к 17 линия)
  4. р (вставляя здесь приносит вставленную линию к следующей строке)
  5. сдвига + < < (отступ назад один, потому что он использовал оригинальный отступ, который был еще один из-за того, в списке)

Тогда появился следующий вопрос об удалении тегов - там, скорее всего, есть плагин, чтобы помочь мне, на котором я буду охотиться сейчас.

Было ли то, что я делал давно? есть ли более быстрый способ или более эффективный способ достичь этого? (За исключением немного об удалении тегов списка вокруг заголовка.

ответ

4

Tim Папы unimpaired plugin, а также мой LineJuggler plugin обеспечивают ]e отображения для быстрого перемещения линии (линий). При этом, вы можете переместить линию от 19 до 17 лет (то есть более 18) с 1[e.

для удаления окружающих тегов, посмотрите на surround.vim - Delete/change/add parentheses/quotes/XML-tags, а также от Тима. с другой стороны, вы можете просто удалить внутренний тег (dat), и использовать мои UnconditionalPaste plugin «S glp отображения, чтобы вставить что как отдельная строка, или даже использовать g[p на строке 18 для вставки в выше с правильным отступом (текущей строки).

PS: Вместо 19gg вы также можете сделать 19G; еще два нажатия клавиш, но параллельно.

+0

wow, не мог просить больше. Отлично спасибо :) – user2405469

0

С surround.vim:

/li<CR> " jump to the first <li> 
dst  " remove surrounding <li> and </li> 
dd  " cut the line 
k  " move up one line 
[p  " paste above with the same indent 

Без:

/li<CR> " jump to the first <li> 
da<  " delete <li> 
$  " jump to end of line 
.  " repeat deletion 
dd  " cut the line 
k  " move up one line 
[p  " paste above with the same indent 

или:

/li<CR> " jump to the first <li> 
"xyit " yank what's inside the `<li>` into register xd 
dd  " cut the line 
k  " move up one line 
O  " open a new line above 
<C-r>=x " insert content of register x 

Кстати, ваш <ol> не хватает в </ol>.