web-dev-qa-db-ja.com

Oh My ZSHテーマに改行を追加

既存のOh My ZSHテーマに改行を追加しようとしていますが、何を追加するか、どこに追加または変更する必要があるかわかりません。何か案は?

18
Andrew Connell

私は実際に同じ答えを探していました。しかし、私が現在使用している agnoster テーマに改行を追加したかっただけなので、私のニーズはもう少し具体的でした。

私の研究では、すでにそれを行っているフォークされたテーマがたくさんありますが、これは新しい行を追加するだけの過剰な解決策だと思いました。

だから私はagnosterコードを読んで、_.zshrc_ファイルのPrompt_end()関数を上書きするこの簡単なソリューションを考え出しました。

これを行うには、次のコードを_.zshrc_ファイルに追加します。

_Prompt_end() {
  if [[ -n $CURRENT_BG ]]; then
      print -n "%{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR"
  else
      print -n "%{%k%}"
  fi

  print -n "%{%f%}"
  CURRENT_BG='' 

  #Adds the new line and ➜ as the start character.
  printf "\n ➜";
}
_

それがあなたがあなたの選んだテーマをどのようにカスタマイズするかについての手がかりを手に入れるのを助けることを願っています。

49
gvsrepins

プロンプトを変更する適切な場所は、テーマ自体にあると思います。私のシステムでは~/.oh=my-zsh/themes/agnoster.zsh-themeにあります。そこに\n➜を追加しました:
このセクションを検索:

# End the Prompt, closing any open segments

Prompt_end() {
  if [[ -n $CURRENT_BG ]]; then
    echo -n " % 

{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR"
  else
    echo -n "%{%k%}"
  fi
  echo -n "\n➜%{%f%}"
  CURRENT_BG=''
}
2
Micheal Bee

これは、他のバージョンと同じように機能する私のバージョンですが、前の行の最後のシンボルを繰り返して、agnosterが提供する正確なプロンプトを模倣します。

Prompt_end() {
  if [[ -n $CURRENT_BG ]]; then
    echo -n " %{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR"
  else
    echo -n "%{%k%}"
  fi
  echo -n "\n%{%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR%{%f%}"
  CURRENT_BG=''
}

注:ライブラリのソースコードを変更したくない場合は、この関数を~/.zshrcファイルの終わり近く。その後、ライブラリが提供する関数で使用されます。

enter image description here

1
Felix Dombek