tmux tidak mewarnai PS1 prompt


11

Baru-baru ini saya memutuskan untuk mengubah variabel PS1 saya untuk mengakomodasi beberapa warna Solarized cantik untuk kesenangan menonton terminal saya. Ketika tidak dalam sesi tmux, semuanya hebat! Pelangi, kuda poni, unicorn, dan prompt yang dapat dibedakan! Keren!

Masalahnya adalah dalam tmux, namun. Saya telah memverifikasi bahwa nilai PS1 adalah apa yang saya harapkan dan sama seperti ketika tmux tidak berjalan, yaitu \[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\].

Semua alias saya, dll di .bash_profile saya juga berfungsi seperti yang diharapkan. tmux juga menampilkan warna tanpa insiden, sebagaimana echo -ne "\033[1;33m hi"berperilaku seperti yang diharapkan gls --color.

Baris yang relevan saat ini di .bash_profile saya adalah export PS1="\[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]", meskipun pada awalnya saya sedang mencari skrip yang terletak di file .bash_prompt untuk menangani beberapa persyaratan, dll. Saya mencoba kembali ke versi yang lebih sederhana.

Eksekusi bashakan menyebabkan prompt untuk mewarnai, tetapi harus dilakukan di setiap panel. export PS1=[that long string I've already posted]tidak akan.

.Tmux.conf saya adalah sebagai berikut:

set-option -g default-command "reattach-to-user-namespace -l /usr/local/bin/bash"
set -g default-terminal "xterm-256color"
set-window-option -g automatic-rename on
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"

Bagian yang relevan dari .bash_profile:

export TERM="xterm-256color"
if which tmux >/dev/null 2>&1; then
    test -z "$TMUX" && (tmux attach || tmux new-session)
fi

Saya menggunakan macOS Sierra, iTerm 2, saya sudah mencoba versi homebrew bash dan system bash (saat ini menggunakan homebrew), tmux 2.4.

Saya juga ditempatkan touch testing_touch_from_bash_profiledi .bash_profile saya saat dalam sesi tmux dengan dua panel, membunuh satu panel, membuka panel dan memverifikasi bahwa file itu sebenarnya dibuat.

echo $TERMkembali xterm-256color.

Saya telah memastikan bahwa ketika keluar tmux untuk menguji perubahan pengaturan, saya telah keluar dari tmux dan bahwa tidak ada proses tmux saat ini berjalan pada sistem melalui ps -ax | grep tmux.

Anehnya, sumber skrip .bash_prompt juga mengubah warna selama saya melakukannya di setiap panel tmux.

Saya telah melihat /programming/21005966/tmux-prompt-not-following-normal-bash-prompt-ps1-w dan mencoba menambahkan bendera --login setelah panggilan bash di baris pertama .tmux.conf saya. Meluncurkan tmux with tmux new bashakan menyebabkan panel pertama berwarna, tetapi panel selanjutnya tidak.

Variabel $ PS1 dihormati karena tampaknya semua aspek kecuali mewarnai salah satu bidang.

Adakah yang punya ide?


Coba tanda kutip tunggal
Kevin

5
The PS1pengaturan Anda diposting tidak memiliki perintah apapun untuk mengubah warna. Posting pengaturan aktual yang berfungsi di luar tmux. Juga, Anda harus menetapkan PS1di .bashrc, tidak .bash_profile: .bash_profilemungkin tidak dijalankan sama sekali, dan pengaturan mungkin ditimpa kemudian.
Gilles 'SO- stop being evil'

Jawaban:


3

PS1 Anda juga memberi saya keluaran hitam putih.

Namun beralih kembali ke tambang memberi saya warna, jadi Anda harus bisa mengetahui perbedaannya, saya gunakan

$ echo $PS1
\[\033[01;31m\]\t \[\033[01;32m\]durrantm \[\033[02;36m\]\h \[\033[01;34m\]`pwd | sed "s#\(/[^/]\{1,\}/[^/]\{1,\}/[^/]\{1,\}/\).*\(/[^/]\{1,\}/[^/]\{1,\}\)/\{0,1\}#\1_\2#g"` \[\033[00;33m\]$(git_branch)\[\033[00m\]\n\$

git_branch adalah fungsi bash yang saya miliki yaitu:

git_branch () { 
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'
}

Milik vs Milikku:

masukkan deskripsi gambar di sini

Ini berfungsi sama di OSX dan Ubuntu


10

Solusi saya untuk masalah ini adalah pengaturan

force_color_prompt=yes

di saya .bashrc. Sekarang prompt tmux saya memiliki warna.


Tidak yakin mengapa ini berperilaku berbeda di tmux dengan di luar itu, tetapi ini melakukan trik untuk saya juga.
Matt Lacey

Dengan tinta Anda harus menentukan ini: apa yang harus Anda lakukan adalah menjalankan perintah tmux, dan kemudian di dalam menjalankan sesi tmux source ~/.bashrc. Anda perlu melakukannya di setiap panel.
evaristegd

Terima kasih, ini berfungsi untuk saya juga di Ubuntu 18.04 gnome-terminal.
intijk

1

Di mesin saya, solusinya adalah menambahkan

set -g default-terminal "xterm-256color"

untuk ~/.tmux.conf.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.