Tash1moto
@Tash1moto

Vim. Какие варианты перенести текст?

Всем привет, недавно разобрался в виме, настроил всё красиво, отлично работает, доволен.
Как изящнее можно поставить все блоки span перед img, в минимум операций? как бы вы сделали?
Пример разметки:
<div class="block"><img src="https://d.wattpad.com/story_parts/31040628/images/13cd9506982ebf05.jpg"> <span>Title</span> </div>
    <div class="block"><img src="https://d.wattpad.com/story_parts/31040628/images/13cd9506982ebf05.jpg"> <span>Title</span> </div>
    <div class="block"><img src="https://d.wattpad.com/story_parts/31040628/images/13cd9506982ebf05.jpg"> <span>Title</span> </div>
    <div class="block"><img src="https://d.wattpad.com/story_parts/31040628/images/13cd9506982ebf05.jpg"> <span>Title</span> </div>
    <div class="block"><img src="https://d.wattpad.com/story_parts/31040628/images/13cd9506982ebf05.jpg"> <span>Title</span> </div>
    <div class="block"><img src="https://d.wattpad.com/story_parts/31040628/images/13cd9506982ebf05.jpg"> <span>Title</span> </div>
    <div class="block"><img src="https://d.wattpad.com/story_parts/31040628/images/13cd9506982ebf05.jpg"> <span>Title</span> </div>
  • Вопрос задан
  • 538 просмотров
Пригласить эксперта
Ответы на вопрос 2
Как вариант:
1. Поставить курсор на начало первого открывающего тега <span>
2. Нажать Ctrl+V
3. Выделить блок со всеми тегами <span> (включая закрывающие теги)
4. Нажать d
5. Переместить курсор на начало первого тега <img>
6. НажатьCtrl+V
7. Нажать j столько раз, сколько понадобится, чтобы курсор оказался в начале последнего тега <img>
8. Нажать [p

Ещё с регулярками поколдовать можно
Ответ написан
@abcd0x00
Нужно записать макрос для одной строки и запустить его для каждой строки. В идеале, макрос записывается так, чтобы начинать действия в начале строки, а заканчивать действия в начале следующей строки (чтобы можно было его просто запускать и он строки преобразовывал последовательно друг за другом).

В Vim'е есть запись макросов и в Emacs'е есть запись макросов.

Как сделать сам макрос:
1. Нужно поставить курсор на начало строки.
2. Включить запись макроса.
3. Через поиск строки найти начало тега "<img".
4. Вернуться на открывающую угловую скобку.
5. Начать выделение.
6. Через поиск перейти к закрывающей угловой скобке.
7. Перейти за закрывающую угловую скобку.
8. Вырезать выделенное.
9. Через поиск найти конец тега "span>".
10. Перейти за закрывающую угловую скобку.
11. Вставить содержимое буфера.
12. Перейти в конец строки.
13. Перейти на следующую строку.
14. Вернуться в начало строки.
15. Остановить запись макроса.

Тут так много написано не потому, что надо много делать, а чтобы было всё понятно. На самом деле, это делается 10 секунд.

Чем быстрее приучишься к макросам, когда будешь их записывать по несколько штук в день, тем быстрее будешь обрабатывать подобные тексты. Это очень мощное средство.

В Vim'е макросы послабее, чем в Emacs'е, там их меньше сохранять можно, да и, вроде, нет какого-то мощного редактора, тогда как в Emacs'е для редактирования макросов есть несколько режимов, их можно писать в символьном виде как обычный текст (не только записывать действия), да и просто можно частично менять их и отлаживать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы