Заменить:^\(\w.*?\) *=.*
по:extern \1;
Объяснение :сопоставить строки, начинающиеся(^
)с составной частью слова (\w
), за которой следует любое количество символов, кроме новой строки(.*?
)до первого появления нуля или более пробелов ( *
), за которым следует знак равенства и больше символов, кроме новой строки(=.*
). Часть строки до и за исключением необязательных пробелов, за которыми следует знак равенства, помещается в группу, которую замещающий текст может использовать как \1
.
Если у вас есть инициализаторы, которые охватывают несколько строк, вы можете удалить строки, начинающиеся с некоторого пробела, с M-x flush-lines
в регулярном выражении ^\s-
.
Ваша переменная $PS1 использует $n один раз, потому что $n оценивается и заменяется своим значением, когда $PS1 изначально устанавливается. Это связано с тем, что вы используете двойные кавычки, в bash он оценивает переменные в строке с двойными кавычками -в назначении.
Если вы хотите, чтобы ваш $PS1 отражал текущее значение $n, вам нужно либо заключить $n в одинарные кавычки, либо избежать знака доллара.
Например:
PS1='$n'
Или
PS1="\$n"