Vim скрипт для отступа выбранного кода, вставки кода до и после выбора - PullRequest
0 голосов
/ 14 декабря 2011

Как мне написать в Vim действие, которое будет принимать выбранные строки, делать отступы один раз, переходить к началу и вставлять код, затем переходить к концу и вставлять код?

Код, которыйдолжен быть вставлен в начале, а конец статичен и не нуждается в изменении (по крайней мере, не в этой точке).

Ответы [ 3 ]

3 голосов
/ 14 декабря 2011

Допустим, начальный текст ---, а конечный текст ***

:execute "normal gv>i---\<Esc>`>a***" 

Если вы хотите записать его в макрос, произнесите буфер «a», затем начните с визуального выделения,используйте:

q a начать запись в a
> отступ
i вставкарежим
- - - начальный текст
Esc нормальный режим
`> конец последнего визуального выбора
a вставка после
*** конец текста
Esc нормальный режим
q конец записи

2 голосов
/ 14 декабря 2011

Должны работать следующие шаги последовательности клавиш.

  1. поиск начальной строки, например, / mysearch
  2. qa - начинается перекодированиемакрос a
  3. Vxj , где x - необходимое количество строк
  4. >> для отступа
  5. ESC
  6. '<</kbd> переходит к началу отмеченных строк
  7. вставьте все, что вы хотите (например, O чтобы начать новую строку прямо над ней)
  8. ESC
  9. '> переход к концу отмеченных строк
  10. вставьте все, что вы хотите (например, o , чтобы начать новую строку прямо внизу)
  11. нажмите q , чтобы закончить запись макроса.

Или как то так.

HTH

0 голосов
/ 24 октября 2012

Это старый вопрос, но я все равно решил внести свой вклад.Вот как вы можете взять абзац и обернуть текст вокруг него.Не совсем то, что вы просили, но этот будет намного аккуратнее, если вы будете писать маленькие, маленькие, маленькие кусочки кода.В любом месте типа абзаца:

> ip (отступ абзаца)

ki (перейти к первой строке и открыть новую)

введите то, что вы хотите в начале абзаца, здесь

} (перейти к последней строке абзаца)

введитечто вы хотите в конце абзаца

Предостережения здесь, как подразумевается, это должен быть «абзац» (нетпустые строки), и это не будет работать должным образом, если после абзаца нет новой строки.Для этого используйте i вместо o , но тогда вы будете пустой строкой перед нижним битом кода, который вы вставляете.Вам нужно было бы написать что-нибудь в vimscript, если вы хотите учесть это.

Вот все штрихи, которые я использую для настройки макроса t, чтобы сделать блок begin / rescue / end (например):

qt> ipkibegin } orescue end q

Есть, конечно, лучшие способы, но это держать его наМарко уровень.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...