tmux không tô màu dấu nhắc PS1


11

Gần đây tôi đã quyết định thay đổi biến PS1 của mình để phù hợp với một số màu Solarized đẹp mắt cho niềm vui xem thiết bị đầu cuối của tôi. Khi không ở trong một phiên tmux, mọi thứ đều tuyệt vời! Cầu vồng, ngựa non, kỳ lân và một dấu nhắc phân biệt! Mát mẻ!

Vấn đề là trong tmux, tuy nhiên. Tôi đã xác minh rằng giá trị của PS1 là giá trị mà tôi mong đợi và giống như khi tmux không chạy, cụ thể là \[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\].

Tất cả các bí danh của tôi, v.v. trong .bash_profile của tôi cũng hoạt động như mong đợi. tmux cũng đang hiển thị màu sắc mà không có sự cố, như echo -ne "\033[1;33m hi"hành vi như mong đợi gls --color.

Dòng có liên quan hiện tại trong .bash_profile của tôi là export PS1="\[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]", mặc dù ban đầu tôi đang tìm nguồn cung cấp tập lệnh nằm trong tệp .bash_prompt để xử lý một số điều kiện, v.v. Tôi đã thử quay lại phiên bản đơn giản hơn.

Việc thực thi bashsẽ khiến cho dấu nhắc tô màu, nhưng phải được thực hiện trong mỗi khung. export PS1=[that long string I've already posted]sẽ không.

.Tmux.conf của tôi như sau:

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}"

Các phần có liên quan của .bash_profile:

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

Tôi đang sử dụng macOS Sierra, iTerm 2, tôi đã thử cả phiên bản bash homebrew hiện tại và bash hệ thống (hiện đang sử dụng homebrew), tmux 2.4.

Tôi cũng đã đặt touch testing_touch_from_bash_profile.bash_profile của mình trong khi trong phiên tmux có hai khung, giết một ô, mở một ô và xác minh rằng tệp thực tế đã được tạo.

echo $TERMtrả lại xterm-256color.

Tôi đã đảm bảo rằng khi thoát tmux để kiểm tra các thay đổi cài đặt mà tôi đã thoát khỏi tmux và hiện tại không có quá trình tmux nào đang chạy trên hệ thống ps -ax | grep tmux.

Điều kỳ lạ là, tìm nguồn cung cấp tập lệnh .bash_prompt cũng thay đổi màu miễn là tôi làm điều đó trong mỗi khung tmux.

Tôi đã xem /programming/21005966/tmux-prompt-not-following-n normal-bash-prompt-ps1-w và đã thử thêm cờ --login sau cuộc gọi bash ở dòng đầu tiên của .tmux.conf của tôi. Khởi chạy tmux với tmux new bashsẽ làm cho ô đầu tiên tô màu, nhưng các ô tiếp theo thì không.

Biến $ PS1 đang được vinh danh vì dường như tất cả các khía cạnh ngoại trừ tô màu cho bất kỳ trường nào.

Còn ai có ý tưởng nào không?


Hãy thử trích dẫn đơn
Kevin

5
Các PS1thiết lập bạn được đăng không có bất kỳ lệnh để thay đổi màu sắc. Đăng một thiết lập thực tế hoạt động bên ngoài tmux. Ngoài ra, bạn nên thiết lập PS1trong .bashrc, không phải trong .bash_profile: .bash_profilecó thể không được thực hiện ở tất cả, và các thiết lập có thể ghi đè sau.
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


3

PS1 của bạn cũng cho tôi đầu ra đen trắng.

Tuy nhiên, việc chuyển đổi trở lại của tôi mang lại cho tôi màu sắc, vì vậy bạn sẽ có thể tìm ra sự khác biệt, tôi sử dụng

$ 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 là một hàm bash tôi có:

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

Của bạn so với của tôi:

nhập mô tả hình ảnh ở đây

Điều này hoạt động tương tự trên OSX và Ubuntu


10

Giải pháp của tôi cho vấn đề này là thiết lập

force_color_prompt=yes

trong tôi .bashrc. Bây giờ nhắc nhở tmux của tôi có màu.


Không chắc chắn tại sao điều này hành xử khác nhau trong tmux với bên ngoài của nó, nhưng điều này cũng đã lừa tôi.
Matt Lacey

Tôi nên ghi rõ điều này: những gì bạn phải làm là chạy lệnh tmux, và sau đó bên trong một phiên chạy tmux source ~/.bashrc. Bạn cần phải làm điều đó trong mỗi bảng.
evaristegd

Cảm ơn, công việc này đối với tôi cũng trên thiết bị đầu cuối Ubuntu 18.04.
intijk

0

Trên máy của tôi, giải pháp là thêm

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

để ~/.tmux.conf.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.