строка PS1 должна пересчитываться каждый раз при вводе ввода

Заменить:^\(\w.*?\) *=.*
по:extern \1;

Объяснение :сопоставить строки, начинающиеся(^)с составной частью слова (\w), за которой следует любое количество символов, кроме новой строки(.*?)до первого появления нуля или более пробелов (​ *), за которым следует знак равенства и больше символов, кроме новой строки(=.*). Часть строки до и за исключением необязательных пробелов, за которыми следует знак равенства, помещается в группу, которую замещающий текст может использовать как \1.

Если у вас есть инициализаторы, которые охватывают несколько строк, вы можете удалить строки, начинающиеся с некоторого пробела, с M-x flush-linesв регулярном выражении ^\s-.

0
14.08.2020, 13:47
1 ответ

Ваша переменная $PS1 использует $n один раз, потому что $n оценивается и заменяется своим значением, когда $PS1 изначально устанавливается. Это связано с тем, что вы используете двойные кавычки, в bash он оценивает переменные в строке с двойными кавычками -в назначении.

Если вы хотите, чтобы ваш $PS1 отражал текущее значение $n, вам нужно либо заключить $n в одинарные кавычки, либо избежать знака доллара.

Например:

PS1='$n'

Или

PS1="\$n"
1
18.03.2021, 23:12

Теги

Похожие вопросы