私がやるすべての作業はicloudディレクトリにあるので、bash
プロンプトは非常に長くなります。
~/Library/Mobile Documents/com~apple~CloudDocs/Projects/foo/bar/baz @master $
私のヒントは次のとおりです。
PS1='\w\[\e[1;35m\]$(__git_ps1 " @%s") \[\e[1;32m\]\$\[\e[m\] '
/Library/Mobile Documents/com~apple~CloudDocs/
\w
inの発生を同様のものに置き換えて、icloud
以下のようなより良いプロンプトを表示することは可能ですか?
~/icloud/Projects/foo/bar/baz @master $
答え1
Zshには、プロンプトでもほとんど自動的にディレクトリ名を短縮する「名前付きディレクトリ」機能があります。 Bashにはこれに対応する機能がないと思いますが、PROMPT_COMMAND
変数を設定してusingプロンプトのinsetadに印刷するカスタム関数を実行して問題を解決できます\w
。
/tmp/test
たとえば、パスの最初の文字をに置き換える必要があります~testdir
。
set_promptpath() {
promptpath=$PWD;
# do whatever replacement you like here
promptpath=${promptpath/#\/tmp\/test/\~testdir}
}
PROMPT_COMMAND=set_promptpath
PS1='$promptpath\$ '
答え2
cwd
パスを動的に更新する関数を使用して、@ilkkachuのいくつかの答えを使用してこの問題を解決しました。
cwd() {
cwd=${PWD/\/Users\/htor/\~}
echo ${cwd/\Library\/Mobile Documents\/com~apple~CloudDocs/icloud}
}
PS1='$(cwd)\[\e[1;35m\]$(__git_ps1 " @%s") \[\e[1;32m\]\$\[\e[m\] '
きれいではありませんが、少なくとも私のヒントはまたきれいです!