it-swarm.com.de

Wie kann ich meine iTerm-Eingabeaufforderung in einem Git-Zweig anders anzeigen lassen?

Ich versuche, mein iTerm Prompt so einzurichten wie Paul Irish

Bisher habe ich folgendes in ~/.profile:

# Add git branch name to Prompt
parse_git_branch() {
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/*\(.*\)/ on \1/'
}

PS1='\n\[\033[0:35m\]\u\[\033[0;32m\]\w\[033[0m\]$(parse_git_branch)\n\$\[\033[0m\] '

Ich weiß nicht, wie ich nur den Zweig in einer anderen Farbe erscheinen lassen soll und nicht das vorangegangene "Ein".

Darüber hinaus gibt es noch weitere Funktionen wie:

  • Anzeige eines "o" an der Eingabeaufforderung, wenn Sie sich nicht in einem Git-Zweig befinden
  • Anzeige eines "±" in einem Zweig
  • Anzeige des Datums am Zeilenende

Jede Hilfe wäre dankbar

14
purinkle

Ich habe gerade einen Post geschrieben, wie man das alles macht. Ich habe alle Grundlagen behandelt, musste aber ein paar Dinge erraten, z. Wie verwendet Paul die Symbole usw.? Wenn Sie es lesen möchten, schauen Sie unter http://digitalformula.net/articles/pimp-my-Prompt-like-paul-irish nach.

Es gibt auch einen Artikel auf digitalformula.net, der einige andere Prompt-Beispiele zeigt - siehe http://digitalformula.net/articles/a-couple-more-bash-Prompt-examples .

BEARBEITET: Der Codeteil lautet wie folgt:

PATH=$PATH:~/Data/Scripts:~/Data/Utils/rar:~/_Applications:~/_Applications/lynx

# alias to quickly show if any Handbrake processes are running
alias hb='Sudo ps -aef | grep HandBrakeCLI'

# alias for quick DNS cache flushing
alias fc='Sudo dscacheutil -flushcache'

# enable the git bash completion commands
source ~/.git-completion

# enable git unstaged indicators - set to a non-empty value
GIT_PS1_SHOWDIRTYSTATE="."

# enable showing of untracked files - set to a non-empty value
GIT_PS1_SHOWUNTRACKEDFILES="."

# enable stash checking - set to a non-empty value
GIT_PS1_SHOWSTASHSTATE="."

# enable showing of HEAD vs its upstream
GIT_PS1_SHOWUPSTREAM="auto"

BLACK=$(tput setaf 0)
RED=$(tput setaf 1)
GREEN=$(tput setaf 2)
YELLOW=$(tput setaf 3)
Lime_YELLOW=$(tput setaf 190)
POWDER_BLUE=$(tput setaf 153)
BLUE=$(tput setaf 4)
Magenta=$(tput setaf 5)
CYAN=$(tput setaf 6)
WHITE=$(tput setaf 7)
BRIGHT=$(tput bold)
NORMAL=$(tput sgr0)
BLINK=$(tput blink)
REVERSE=$(tput smso)
UNDERLINE=$(tput smul)

# set the Prompt to show current working directory and git branch name, if it exists

# this Prompt is a green username, black @ symbol, cyan Host, Magenta current working directory and white git branch (only shows if you're in a git branch)
# unstaged and untracked symbols are shown, too (see above)
# this Prompt uses the short colour codes defined above
# PS1='${GREEN}\u${BLACK}@${CYAN}\h:${Magenta}\w${WHITE}`__git_ps1 " (%s)"`\$ '

# this is a cyan username, @ symbol and Host, Magenta current working directory and white git branch
# it uses the shorter , but visibly more complex, codes for text colours (shorter because the colour code definitions aren't needed)
# PS1='\[\033[0;36m\]\[email protected]\h\[\033[01m\]:\[\033[0;35m\]\w\[\033[00m\]\[\033[1;30m\]\[\033[0;37m\]`__git_ps1 " (%s)"`\[\033[00m\]\[\033[0;37m\]\$ '

# return the Prompt prefix for the second line
function set_prefix {
    BRANCH=`__git_ps1`
    if [[ -z $BRANCH ]]; then
        echo "${NORMAL}o"
    else
        echo "${UNDERLINE}+"
    fi
}

# and here's one similar to Paul Irish's famous Prompt ... not sure if this is the way he does it, but it works  :)
# \033[s = save cursor position
# \033[u = restore cursor position

PS1='${Magenta}\u${WHITE} in ${GREEN}\w${WHITE}${Magenta}`__git_ps1 " on %s"`${WHITE}\r\n`set_prefix`${NORMAL}${CYAN}\033[s\033[60C (`date "+%a, %b %d"`)\033[u${WHITE} '
7
digitalformula

Ich benutze git-aware-Prompt

Viele Lösungen, die ich zuvor hatte, zeigten nur den Git-Zweig an, wenn ich mich nur in diesem Verzeichnis befand, als das Terminal geladen wurde. Wenn ich iTerm in einem Nicht-Git-Repo gestartet habe, würde es nicht funktionieren, wenn ich cd in ein Verzeichnis mit einem Git-Repo __ verändere.

Dieses Github-Projekt hat das für mich gelöst.

17
spong

Statt archaische Terminalcodes zu verwenden, verwenden Sie stattdessen tput, wodurch der Code viel einfacher zu lesen und viel schwerer zu machen ist:

BLACK=$(tput setaf 0)
RED=$(tput setaf 1)
GREEN=$(tput setaf 2)
YELLOW=$(tput setaf 3)
Lime_YELLOW=$(tput setaf 190)
POWDER_BLUE=$(tput setaf 153)
BLUE=$(tput setaf 4)
Magenta=$(tput setaf 5)
CYAN=$(tput setaf 6)
WHITE=$(tput setaf 7)
BRIGHT=$(tput bold)
NORMAL=$(tput sgr0)
BLINK=$(tput blink)
REVERSE=$(tput smso)
UNDERLINE=$(tput smul)

# Set Titlebar and Prompt
TITLEBAR='\e]0;\h: ${PWD/$HOME/~}\a'
PS1="${TITLEBAR}${WHITE}[${POWDER_BLUE}\[email protected]\h${WHITE}]${NORMAL}$ "

Die Einstellung der Titelleiste ist optional. Verwenden Sie am Ende unbedingt ${NORMAL}, um die Farbänderung auszuschalten.

9
SiegeX

Fügen Sie dies Ihrem ~/.bashrc oder ~/.profile hinzu.

PS1="\[email protected]\h:\w on\e[0;35m$(__git_ps1)\e[m\$ "

Woher,

$(__git_ps1) wird zum Drucken des Zweignamens verwendet

\e definiert den Beginn des Farbschemas

[0;35m steht für die violette Farbe

\e[m definiert das Ende des Schemas

Auch , ich habe deine aktuelle Eingabeaufforderung behoben:

PS1='\n\[\033[0;35m\]\u\[\033[0;32m\]\w\[\033[0m\]$(__git_ps1)\n\$\[\033[0m\] '
7
karlphillip

Wie oben erwähnt verwende ich auch git-aware-Prompt .

Führen Sie dies aus, um schnell zu installieren:

mkdir ~/.bash
cd ~/.bash
git clone git://github.com/jimeh/git-aware-Prompt.git

Fügen Sie dies oben in Ihren ~/.bash_profile ein:

export GITAWAREPROMPT=~/.bash/git-aware-Prompt
source "${GITAWAREPROMPT}/main.sh"

In derselben Datei ~/.bash_profile befindet sich die Aufforderung, die ich verwende:

export PS1="\n\[$txtpur\]\u\[$bldwht\]@\h\[$bldgrn\]:\[$bldblu\] \w \[$txtcyn\]\$git_branch\[$txtred\]\$git_dirty\[$txtrst\]\$ \[$txtwht\] "

export Sudo_PS1="\[$bakred\]\[email protected]\h\[$txtrst\] \w\$ "

sie können die Farben nach Ihren Wünschen ändern

Das bedeuten einige der Symbole in PS1:
\u - Benutzername
@ - cooles Symbol
\h - Hostname
: - cooles Symbol, um Dinge zu trennen
\w - vollständiger Pfad, verwenden Sie\W für kurzen Pfad
\git_branch - Name des aktuellen Zweigs
\git_dirty - show * wenn sich der Zweig ändert
$ - cooles Symbol zur Kennzeichnung, Befehl eingeben 

3
csebryam

Eine sehr umfangreiche und umfassende Lösung (nicht nur für iterm Shell, sondern auch für Vim und andere) ist Powerline .

0
Geert