web-dev-qa-db-ja.com

GitブランチにいるときにiTermプロンプトを別の方法で表示するにはどうすればよいですか?

Paul Irish と同じ方法でiTermプロンプトを設定しようとしています

これまでのところ、~/.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\] '

ブランチだけを別の色で表示する方法がわかりません。

これに加えて、次のような他の機能があります。

  • Gitブランチにないときにプロンプ​​トに「o」を表示する
  • ブランチにいるときに「±」を表示する
  • 行末に日付を表​​示する

どんな助けでもいただければ幸いです

16
purinkle

私はこれをすべて行う方法についての投稿を書いたところです。私はすべての基本をカバーしましたが、いくつかのことを推測する必要がありました。 Paulがシンボルをどのように使用するかなど。読みたい場合は、 http://digitalformula.net/articles/pimp-my-Prompt-like-paul-irish を確認してください。

他の2つのプロンプトの例を示すdigitalformula.netに関する記事もあります http://digitalformula.net/articles/a-couple-more-bash-Prompt-examples を参照してください。

編集:コード部分は次のとおりです。

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\]\u@\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

git-aware-Prompt を使用します。

私が以前に持っていた多くの解決策は、ターミナルがロードされたときにそのディレクトリにいる場合にのみgitブランチを表示するだけでした。 git以外のリポジトリでiTermを起動した場合、gitリポジトリでcdディレクトリに移動すると機能しません。

このgithubプロジェクトは私のためにそれを解決しました。

20
spong

古い端末コードを使用するのではなく、代わりにtputを使用してください。これにより、コードが非常に読みやすくなり、混乱するのがはるかに難しくなります。

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}\u@\h${WHITE}]${NORMAL}$ "

タイトルバーの設定はオプションです。ただ${NORMAL}最後に色の変更をオフにします。

9
SiegeX

これを_~/.bashrc_または_~/.profile_に追加します

_PS1="\u@\h:\w on\e[0;35m$(__git_ps1)\e[m\$ "
_

どこ、

$(__git_ps1)はブランチ名を出力するために使用されます

_\e_は配色の開始を定義します

_[0;35m_は紫色を表します

_\e[m_はスキームの終わりを定義します

また、私はあなたの現在のプロンプトを修正しました:

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

上記のように、私は git-aware-Prompt も使用します。

これを実行して、すばやくインストールします。

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

これを~/.bash_profileの上部に追加します。

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

同じファイル~/.bash_profileに、使用するプロンプトは次のとおりです。

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

export Sudo_PS1="\[$bakred\]\u@\h\[$txtrst\] \w\$ "

色はお好みに応じて変更できます

PS1の一部の記号の意味は次のとおりです。
\u-ユーザー名
@-クールなシンボル
\h-ホスト名
:-物事を分けるクールなシンボル
\w-フルパス、ショートパスには\ Wを使用
\git_branch-現在のブランチの名前
\git_dirty-ブランチに変更があったときに*を表示
$-意味のあるクールな記号、コマンドを入力

5
csebryam

(iterm Shellだけでなく、Vimなどの)非常に機能豊富で幅広いソリューションは Powerline です。

0
Geert