Замена не висящих скобок на висячие скобки - PullRequest
1 голос
/ 22 июня 2011

Что такое регулярное выражение для изменения

class ABC
{
}

до

class ABC {
}

Я могу использовать команду J для одной строки, но как это сделать для всего файла.

Спасибо

Ответы [ 5 ]

4 голосов
/ 22 июня 2011

В нескольких ответах предлагается использовать команду подстановки.Для меня более целесообразно использовать команду :global в сочетании с командой :join.Начните с создания подходящего шаблона поиска:

/\n{

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

:g//j

Если вы оставите поле поиска пустым, Vim автоматически использует последний шаблон поиска (это также верно для :substituteкоманда).Я предпочитаю разбивать глобальную команду на два отдельных шага, но вы также можете сделать это за один раз.Вот длинная форма:

:g/\n{/join
0 голосов
/ 22 июня 2011

Для вашего примера это работает для меня на gVim: %s /class.*\zs\_[^{]*{/ {\r/

0 голосов
/ 22 июня 2011

Воспользуйтесь следующим поиском и замените:

:%s/\n{/ {/g
0 голосов
/ 22 июня 2011

Как насчет записи макроса, т.е.

/class               # search for class
gg                   # goto beginning of file
qq                   # start recording of macro
J                    # join lines
n                    # move to next match
q                    # stop recording

выполнить с помощью @q

0 голосов
/ 22 июня 2011

Попробуйте следующее:

:%s/\(class.*\)\_.{/\1\ {/g

(обновлено)

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