Вопрос

Я положил следующее в моем файле ~ / .localsh, чтобы настроить мою подсказку Bash при работе с Git.

В основном я хочу получить текущую ветвь, отображаемую в моем терминале. Инструмент GITK показывает ветви с зеленым фоном и черным передним планом, так что я пытаюсь сделать.

То, что у меня работает, но когда я нажимаю стрелку вверх на клавиатуре, чтобы прокрутить через предыдущие команды, она перезаписывается.

Этот материал оказался раньше, когда вы не заканчиваете цветовую последовательность с [ E [0m]. Теперь это происходит со мной из-за вызова функции GetGitBranch. Я думаю, что это есть что делать с терминалом, не зная, как долго это подсказка.

Итак, вот вообще вопрос ... Как мне правильно использовать динамические элементы в моем приглашении Bash, и не попадаете в него, когда я использую стрелки вверх?

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