Как мне окружить два слова тегом <code>в vim, чтобы я мог повторить операцию с оператором точки? - PullRequest
9 голосов
/ 26 апреля 2011

Я работаю с плагином vim -round и этим HTML (где * - мой курсор):

<li class="sample" style="border-color: #005462;">*#005462</li>

Я бы хотел окружить # 005462 <code>, чтобы оно выглядело так: <code>#005462. Я могу сделать это в визуальном режиме, но хотел бы сделать что-то, что я могу повторить с помощью оператора точки. Любой совет?

Ответы [ 4 ]

9 голосов
/ 26 апреля 2011

Вы хотите repeat.vim , который добавляет поддержку . к нескольким другим плагинам, включая Surround.

6 голосов
/ 26 апреля 2011

В обычном режиме попробуйте записать макрос.Затем:

qai<code><esc>ea</code><esc>q
  1. Эта команда скажет начать запись (q) в a.
  2. Запуск режима вставки (i).
  3. Тип .</li> <li>Return to normal mode (<esc>).</li> <li>Move to the end of the word (e).</li> <li>Then enter insert mode again (a). </li> <li>Type .
  4. Возврат в нормальный режим ().
  5. Затем остановка записи (q).

После того, как вы можете повторить эту команду, используя @a или @@ для повторения последней использованной команды.Не забывайте находиться на правильном месте, когда вы вызываете a, иначе вы не получите ожидаемого результата.

1 голос
/ 27 апреля 2011

Пара других людей столкнулись с проблемами, повторяя вещи с Surround.vim:

В первой ссылке есть цитата изround.vimдокументы, которые подразумевают визуальный режим, не работают:

"."Команда будет работать с ds, cs и yss, если вы установите repeat.vim

И учитывая окружающие его текстовые элементы, я не думаю, что есть способ окружить только # 005462 без использования визуальногоmode.

Так что для этой конкретной проблемы Я думаю, что быстрый, повторяемый поиск и замена - ваша лучшая ставка.

:s/: \(#......\);/: <code>\1<\/code>;/g

Перейдите к правой линии ивведите или вставьте его в режиме командной строки и нажмите ввод.

Перейдите к следующей строке и нажмите &, чтобы повторить ее.

Если вы знаете, что хотите заменить ВСЕ из них вфайл, вы можете добавить % перед командой s/, вот так:

:%s/: \(#......\);/: <code>\1<\/code>;/g

Надеюсь, это поможет!

0 голосов
/ 26 апреля 2011

Проверьте этот Vimcasts.org эпизод о преобразовании haml в erb.Вы можете использовать ту же технику для выполнения своей задачи.

...