256 warna prompt dalam Zsh

14

Bagaimana saya bisa mengatur prompt saya agar diwarnai dalam 256 warna? Saya mencari yang setara dengan bash prompt:

  local DEFAULT="\[\033[0;39m\]"
  local ROOK="\[\033[38;5;24m\]"
  PS1="${ROOK}\$${DEFAULT} "
Sardathrion - menentang penyalahgunaan SE
sumber
1
Malu pada siapa pun yang menatap tetapi tidak terbalik!
phunehehe
export PS1='%{[38;5;24m%};%{[0m%} 'persis apa yang saya inginkan.
Sardathrion - terhadap penyalahgunaan SE
1
Lihat juga Apakah mungkin menggunakan warna bernama dalam Zsh di luar nama ANSI?
Gilles 'SANGAT berhenti menjadi jahat'

Jawaban:

9

Pertama, pastikan terminal Anda mendukung 256 warna, yang saya kira sudah Anda miliki. Kedua, gunakan PS1variabel dengan kode yang benar, misalnya:

export PS1='%{^[[01;38;05;214;48;05;123m%}%m%{^[[0m%} '

Ini akan memberi Anda prompt dengan nama host dalam huruf tebal, dengan warna latar depan 214 dan warna latar 123.

Perhatikan bahwa ^["dimasukkan" dengan mengetik Ctrl+ vdan Ctrl+ [. Lihat artikel yang sangat bagus ini " That 256 Color Thing " untuk seluruh daftar atribut.

phhehehe
sumber
Ya, saya menggunakan terminal memungkinkan 256 warna urxvt.
Sardathrion - terhadap penyalahgunaan SE
Bagaimana saya bisa memverifikasi jika terminal saya mendukung 256 warna? Misalnya, apakah gnome-terminal (Ubuntu) mendukung 256 warna?
Amelio Vazquez-Reina
Gunakan skrip ini (artikel lengkap frexx.de/xterm-256-notes ). gnome-terminaltidak mendukung 256 warna.
phunehehe
1
Host tautan rusak (502 gateway buruk).
Pikrass
1
@Pikrass Saya belum menemukan 404.
Totor
13
export PS1='%F{214}%K{123}%m%k%f'

Dari man zshmisc:

   %F (%f)
          Start (stop) using a different foreground colour, if supported by the terminal.  The colour may be specified two ways: either as a numeric argument, as normal, or by a sequence in braces following the %F, for example %F{red}.  In the latter case the values allowed are as described for the fg zle_highlight attribute; see  Char
          acter Highlighting in zshzle(1).  This means that numeric colours are allowed in the second format also.

   %K (%k)
          Start (stop) using a different bacKground colour.  The syntax is identical to that for %F and %f.

Juga untuk mencobanya bisa digunakan seperti itu:

$> print -P '%F{214}%K{123}%m%k%f'
ДМИТРИЙ МАЛИКОВ
sumber