1
4

1 に答える 1

1

あなたはこれを持っています:

if which rvm-prompt &> /dev/null; then
  if [ $(rvm-prompt i v g s) != "system" ]; then
    rvm_ruby='%{$PR_RED%}‹$(rvm-prompt i v g s)›%{$PR_NO_COLOR%}'
  fi
else
  # We don't have `rvm-prompt`, try using `rbenv` instead.
fi

これが実際に何をしているのか見てみましょう。新しいターミナルを開くとzsh~/.zshrc. あなたの~/.zshrcで、あなたは をsourceing していthemeます。したがって、zshロードすると、行った編集が実行されます。

最初にチェックするのは、 [builtin]rvm-promptを使用して検索できるかどうかです。これは、(の場合は続行) をチェックすることによって行われます。(見つからないことは別の問題であり、この回答とは実際には関係ありません)。zshwhichreturn codewhich0rvm-prompt

見つかった場合は、編集を使用して、の出力が であるrvm-promptかどうかを調べます。そうではないので、への呼び出しを含むように設定します。rvm-prompt i v g ssystem$rvm_rubyrvm-prompt

次に、zshテーマのロードを続行し、最終的に終了して、への呼び出しを含む$PROMPT一連のものに設定します。テーマロジックを再検討しないことを覚えておくと非常に便利です! (そのため、編集後に必要です)!rvm-promptzshsource ~/path/to/theme

だから問題は何ですか?on shell startuprvm-promptと言わなければ、プロンプトの残りのセッションでからの出力を使用 します。(システムの場合、プロンプトにインジケーターは表示されません...空白のままになっているためです! )。system rvm-promptrvm-prompt rvmrvm_ruby

何が起こっているのかを理解したので、修正に取り組むことができます。私が考えることができる2つのアプローチがあります。

1.systemプロンプトから次の単語を削除します。

if which rvm-prompt &> /dev/null; then
  rvm_ruby='%{$PR_RED%}‹$(rvm-prompt i v g s | sed -e "s/system//")›%{$PR_NO_COLOR%}'
else
  # We don't have `rvm-prompt`, try using `rbenv` instead.
fi

<>これは機能しますが、次の場合にプロンプ​​トに(赤) が表示さrvm-promptsystemます。

╭─@charmander.local ~ ‹ruby-1.9.3›
╰─ rvm default
╭─@charmander.local ~ ‹ruby-1.9.3›
╰─ rvm use system
Now using system ruby.
╭─@charmander.local ~ ‹›
╰─

これは便利かもしれません。イライラすると思います。

2.よりスマートに使用する$PROMPT:関数を書く。

あなたのtheme

function current_rvm() {
  if which rvm-prompt &> /dev/null; then
    if [ $(rvm-prompt i v g s) != "system" ]; then
      # The double quotes make it work, single quotes do not work.
      echo "%{$PR_RED%}‹$(rvm-prompt i v g s)›%{$PR_NO_COLOR%}"
    else
      # `rvm-prompt` is `system`
      echo ''
    fi
  else
    # We don't have `rvm-prompt`, try using `rbenv` instead.
  fi
}
local rvm_ruby='$(current_rvm)'

これはあなたにとってうまくいくはずです:

╭─@charmander.local ~ ‹ruby-1.9.3›
╰─ rvm use system
Now using system ruby.
╭─@charmander.local ~
╰─ rvm use default
Using /Users/simont/.rvm/gems/ruby-1.9.3-p362
╭─@charmander.local ~ ‹ruby-1.9.3›
╰─
于 2013-03-11T08:47:08.743 に答える