2014-10-29 6 views
1

Что я пытаюсь сделать, это добавить #ifdef и #endif до и после puts. В коде указаны сотни puts. Строка внутри puts в каждом случае различна. Я работаю над этой проблемой с текстовыми редакторами, такими как vim и возвышенный текст. 2.Самый быстрый способ вставить строки несколько раз?

Есть ли более разумный способ выполнения такой задачи?

         #ifdef SOMETHING 
puts("blah blah blah"); ========>  puts("blah blah blah"); 
            #endif 
+0

Вы пробовали команду 'substitute' в vim? Или даже лучший инструмент 'sed'? – 4rlekin

+0

Спасибо за подсказку, я сначала отправлю их по электронной почте – RNA

+1

Если 'puts' - все однострочные выражения, тогда вы можете сделать что-то подобное в Notepad ++ (и я также предполагаю в ST2) ... Найти' (^ puts . *) 'и заменить все на # # iddef \ r \ n \ t \ 1 \ r \ n # endif'. Не забудьте включить режим регулярного выражения, если используете Notepad ++. – jbaums

ответ

2

Sublime Text:


AFAIR вы можете использовать несколько функциональных курсоры в ST, как:
«> find_all <, puts, то ctrl+shift+l (или что-то подобное тому, которое даст вам индивидуальный курсор для каждого выделенная линия), затем введите требуемые модификации типа (которые будут делать то же самое перемещение/ввод текста для каждой строки). «

Конечно, это не сработает с разными отступом и т. Я боюсь ...

VIM:


В substitute она должна выглядеть более или менее, как это:

:%s/puts(.\{-});/#ifdef SOMETHING\n &\n#endif/g 

(хотя я не уверен, если что-то не нужно было бы избежать здесь)

в основном это означает:
% - для всего файла
s - заменитель
/first_part/second_part/ - заменить вхождение first_part с second_part
g - глобально - это значит, для каждой линии найден среди % (весь файл)

и первая часть:
нормально: 'путы (', то не жадный (если вы не знаете, что это значит - google для него, действительно стоит знать) regex для любого персонажа, а затем normal: ');' который должен соответствовать вашим путы

и второй:
нормально: „#ifdef-то“, то символ новой строки, затем четыре пространства, то & что означает „найденный образец“ (в основном это puts ваш), то символ новой строки, то normal: '#endif'


Я написал это в верхней части головы, поэтому, пожалуйста, учтите, что некоторые вещи могут нуждаться в коррекции (ярлыки в ST или экранирование некоторых символов в формуле substitute).
Спасибо за понимание

+0

найти все, 'ctrl + shift + l', дал мне несколько курсоров. Я смог выполнить задачу в течение 5 секунд!: D: D Я попробую заменить тоже – RNA

+1

с ST, вероятно, меньше набирает текст, и проще понять, что происходит, но если вы планируете изучать vim (я имею в виду, как всегда) 'substitute' является одной из тех первых команд, которые он (IMHO) – 4rlekin

+0

Yup Я изучаю vim тоже. – RNA