سؤال

لقد وضعت ما يلي في ملف ~/.localsh لتخصيص موجه Bash عند العمل مع GIT.

في الأساس أريد أن أعرض الفرع الحالي في محطة بلدي. تُظهر أداة GITK الفروع ذات الخلفية الخضراء والمقدمة السوداء ، لذلك هذا ما أحاول القيام به.

ما لديّ يعمل ، لكن عندما أضغط على السهم لأعلى على لوحة المفاتيح للتمرير مرة أخرى من خلال الأوامر السابقة ، يتم الكتابة فوقها.

لقد حدث هذه الأشياء من قبل عندما لا تنهي تسلسل لون مع [ e [0m]. الآن يحدث لي بسبب استدعاء وظيفة getGitBranch. أعتقد أن الأمر يتعلق بالمحطة التي لا تعرف المدة التي تستغرقها المطالبة.

لذا ، فإن Heres السؤال ... كيف يمكنني استخدام العناصر الديناميكية بشكل صحيح في مطالبة Bash الخاصة بي وعدم الحصول عليها عندما أستخدم الأسهم Up؟

function getgitbranch()
{
git branch | grep "^\*" | cut -c3-
}

function blabla()
{
PS1=""
PS1="$PS1\[\e[0;30m\]\[\e[42m\]\[\$(getgitbranch)\]\[\e[0;49m\]\[\e[0m\] "
PS1="$PS1\[\e[1;35m\][\[\e[0m\]"
PS1="$PS1\[\e[1;33m\]\w\[\e[0m\]"
PS1="$PS1\[\e[1;35m\]]\[\e[0m\]"
PS1="$PS1 \[\e[1;31m\]>\[\e[0m\] "
export PS1
}
هل كانت مفيدة؟

المحلول

مسح ال \[\] من جميع أنحاء $(getgitbranch). تحتل الأحرف التي تخرجها هذه الوظيفة مساحة بالفعل على الشاشة ، لذا فأنت تريد أن تفسر Bash لهم. استخدام \[\] يقول لا عد الشخصيات التي تظهر في الداخل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top