Jawaban:
Berikut adalah contoh cara menyetel prompt merah:
PS1=$'\e[0;31m$ \e[0m'
Keajaibannya adalah \e[0;31m
(nyalakan latar depan merah) dan \e[0m
(matikan atribut karakter). Ini disebut urutan pelarian. Urutan pelolosan yang berbeda memberi Anda hasil yang berbeda, dari posisi kursor absolut, warna, kemampuan untuk mengubah bilah judul jendela Anda, dan seterusnya.
Untuk mengetahui lebih lanjut tentang escape sequence, lihat entri wikipedia tentang kode escape ANSI
Taruh ini di ~/.zshrc
:
autoload -U colors && colors
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%% "
Warna yang didukung:
red
, blue
, green
, cyan
, yellow
, magenta
, black
, & white
(dari jawaban ini ) meskipun komputer yang berbeda mungkin memiliki pilihan yang valid yang berbeda.
Kode warna sekeliling (dan karakter lain yang tidak dapat dicetak) dengan %{....%}
. Ini agar pembungkusan teks berfungsi dengan benar.
Selain itu, berikut adalah bagaimana Anda bisa membuatnya bekerja dengan pemangkasan direktori dari sini .
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%(5~|%-1~/.../%3~|%4~) %{$reset_color%}%% "
zsh: colors: function definition file not found
%{...%}
berarti bahwa konten akan ditafsirkan sebagai urutan escape literal, sehingga kursor wont bergerak saat mencetak urutan. Jika Anda tidak menggunakan ini, kode warna sebenarnya dapat menggerakkan kursor dan menghasilkan efek yang tidak diinginkan. Ini didokumentasikan di Visual Effects
bagian manual zshmisc
Zsh dilengkapi dengan petunjuk berwarna bawaan. Mencoba
autoload -U promptinit && promptinit
dan kemudian prompt -l
daftar prompt yang tersedia, -p fire
pratinjau prompt "api", -s fire
set itu.
Saat Anda siap untuk menambahkan prompt, tambahkan sesuatu seperti ini di bawah baris muat otomatis di atas:
prompt fade red
Saya tidak berpikir autoload -U colors && colors
itu diperlukan lagi dan seseorang dapat dengan mudah melakukan:
PS1="%{%F{red}%}%n%{%f%}@%{%F{blue}%}%m %{%F{yellow}%}%~ %{$%f%}%% "
untuk mencapai hasil yang sama dengan jawaban FireDude . Lihat dokumentasi ZSH untuk info lebih lanjut.
autoload -U colors && colors
autoload
.
autoload on
?
autoload -U colors
, itu berarti distro Anda sudah memilikinya di beberapa file inisialisasi zsh lainnya. Anda tetap harus memasukkannya ke dalam skrip yang ingin Anda bagikan dengan orang lain.
for i in {1..256}; do print -P "%F{$i}Color : $i"; done;
%F{118}
(1 hingga 256)$FG[018]
(1 hingga 256)$fg[magenta]
(magenta, merah, putih, kuning, hitam, biru, cyan, hijau)PS1='%(?.%F{green}.%F{green})%n@%m:%~%# %f'
PS1='%{$fg[gray]%}[%T][%n@%m%{$reset_color%}:%c%{$reset_color%}%{$fg[gray]%}$(git_prompt_info)]$(prompt_char)%{$reset_color%} '
Definisi variabel (PS1 / PROMPT) perlu ditambahkan ke ~/.zshrc
Kami juga dapat mendefinisikan ulang variabel PS1 pada prompt saat ini untuk mengujinya segera (perubahan tidak disimpan).
Jawaban Bryan Oakley di atas memiliki kesalahan seperti yang telah ditunjukkan dan solusi yang ditawarkan oleh Andrew Marshall meskipun tidak membawa kesalahan, namun tidak terlalu memperjelas karena terlalu banyak penyesuaian pada warna yang digunakan.
Karena macOS Catalina meminta zsh menjadi shell default mulai sekarang, saya pikir beberapa orang lagi mungkin ingin menyesuaikan prompt mereka dan mungkin datang ke sini untuk mendapatkan jawaban. Jadi, saya pikir saya akan mencoba memberikan ringkasan yang lebih luas dan menyentuh gagasan lain yang sangat terkait erat yang memungkinkan lebih banyak penyesuaian.
Kode 3-Digit untuk Berbagai Warna. Pertama-tama, di sini kita dapat menemukan kode 3 digit untuk berbagai warna: https://unix.stackexchange.com/a/124409/194343 . Misalnya, 214 adalah semacam warna oranye.
Latar Depan dan Latar Belakang. Informasi penting lainnya adalah bahwa untuk warna dasar F oreground dan bac K seseorang dapat menentukan apa yang mereka inginkan dengan masing-masing F dan K. Sumber adalah manual zsh tentang efek visual: http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Visual-effects
Jadi, misalnya, dua perintah berikut
autoload -U colors && colors
export PS1="%F{214}%K{000}%m%F{015}%K{000}:%F{039}%K{000}%~%F{015}%K{000}\$ "
menyajikan nama host dalam warna oranye dengan latar belakang hitam, diikuti oleh titik dua putih dengan latar belakang hitam, diikuti oleh direktori kerja saat ini dengan warna biru cerah dengan latar belakang hitam, diikuti dengan tanda dolar putih dengan latar belakang hitam.
Informasi lebih terkait ditemukan di bawah.
Informasi yang cepat di sisi kanan. Misalnya, menambahkan stempel waktu. Lihat https://superuser.com/a/1251045/290299 . Tentu saja, ini dapat diberi kode warna, misalnya dengan beberapa warna biru muda / ungu, seperti ini:
RPROMPT="%F{111}%K{000}[%D{%f/%m/%y}|%@]"
Warna untuk ls
. Setelah membaca manual untuk ls, salah satu contohnya dapat mengaktifkan warna untuk ls
menggunakan dua perintah berikut:
export CLICOLOR=1
export LSCOLORS=gafacadabaegedabagacad
Akhirnya, sebagai komentar terakhir yang belum saya uji karena saya senang dengan konfigurasi saya, jalan lain mungkin bagi seseorang untuk menginstal port coreutils
dari MacPorts dan kemudian menggunakan gdircolors
(sumber: https://unix.stackexchange.com/a/174596 / 194343 ). (Saya dapat mengedit bagian terakhir ini di masa mendatang karena semua hal di atas adalah bagian terkait yang membuat kehidupan sehari-hari jauh lebih menyenangkan dan lebih mudah untuk ditangani.)
Saya telah menemukan bahwa, dengan zsh5 (yang default di Debian Jessie), semua solusi tersebut berfungsi:
$'\e[00m
$fg[white]
$fg{white}
Sekarang, mereka punya masalah: mereka akan memindahkan kursor, menghasilkan stiker yang jelek saat tabbing (untuk pelengkapan otomatis). Solusinya adalah dengan mengelilingi rangkaian pelarian dengan %{FOOBAR%}
. Butuh beberapa saat untuk memikirkan ini. Untuk solusi ke-2 dan ke-3, colors
modul pemuatan adalah wajib. Agar solusi pertama tetap terbaca, cukup tentukan variabel untuk warna yang Anda gunakan.
Untuk mendapatkan prompt dengan warna yang bergantung pada status keluar perintah terakhir, Anda dapat menggunakan ini:
PS1='%(?.%F{green}.%F{red})%n@%m:%~%# %f'
Tambahkan saja baris ini ke ~/.zshrc
.
The dokumentasi daftar mungkin penampung.
Coba favorit saya: masukkan
~/.zshrc
garis ini:
PROMPT='%F{240}%n%F{red}@%F{green}%m:%F{141}%d$ %F{reset}'
jangan lupa
source ~/.zshrc
untuk menguji perubahan
Anda dapat mengubah warna / kode warna, tentu saja :-)
man zshall dan cari PROMPT EKSPANSI
Setelah membaca jawaban yang ada di sini, beberapa di antaranya saling bertentangan. Saya telah mencoba berbagai pendekatan pada sistem yang menjalankan zsh 4.2 dan 5+ dan menemukan bahwa alasan jawaban ini bertentangan adalah karena mereka tidak mengatakan versi ZSH mana yang mereka targetkan. Versi yang berbeda menggunakan sintaks yang berbeda untuk ini dan beberapa di antaranya memerlukan pemuatan otomatis yang berbeda.
Jadi, taruhan terbaik mungkin adalah man zshall dan mencari PROMPT EXPANSION untuk mengetahui semua aturan untuk instalasi zsh khusus Anda. Perhatikan di komentar, hal-hal seperti "Saya menggunakan Ubuntu 11.04 atau 10.4 atau OSX" Tidak terlalu berarti karena tidak jelas versi ZSH yang Anda gunakan. Ubuntu 11.04 tidak menyiratkan versi ZSH yang lebih baru daripada ubuntu 10.04. Mungkin ada sejumlah alasan mengapa versi yang lebih lama diinstal. Dalam hal ini, versi ZSH yang lebih baru tidak menyiratkan sintaks mana yang harus digunakan tanpa mengetahui versi ZSH itu.
Untuk melengkapi semua jawaban di atas, trik mudah lainnya adalah menempatkan pengaturan prompt berwarna ke dalam fungsi zsh. Di sana Anda dapat mendefinisikan variabel lokal ke perintah alias yang lebih panjang, misalnya rc=$reset_color
atau menentukan variabel warna Anda sendiri. Jangan lupa untuk menempatkannya ke dalam .zshrc
file Anda dan memanggil fungsi yang telah Anda tentukan:
# Coloured prompt
autoload -U colors && colors
function myprompt {
local rc=$reset_color
export PS1="%F{cyan}%n%{$rc%}@%F{green}%m%{$rc%}:%F{magenta}%~%{$rc%}%# "
}
myprompt