Dấu nhắc tùy chỉnh Tmux và ZSH: lỗi với tên cửa sổ


43

Tôi đã tùy chỉnh lời nhắc ZSH của mình với oh-my-zsh để làm cho nó dễ đọc hơn và thêm thông tin về git nếu tôi đang ở trong kho lưu trữ.

Ví dụ:
bob@inf [~/docs] %
bob@inf [~/src/nicest] master %(trong kho git)

Nó hoạt động tốt nhưng tôi có một số lỗi với tmuxvà tên cửa sổ. Nó vẫn hiển thị giá trị vô nghĩa và tôi không thể vô hiệu hóa nó automatic-rename off(nó chỉ không hoạt động, tên cửa sổ thay đổi sau mỗi lệnh), cho ví dụ đầu tiên tmux sử dụng ~/docscho tên cửa sổ.

Tôi không chắc làm thế nào tôi có thể sửa nó, tôi muốn giữ lời nhắc zsh của mình như vậy, nếu có thể thay đổi nhưng muốn hiểu vấn đề ở đâu?

Một giải pháp khác có thể là xác định lại lệnh settile(từ câu trả lời này ) nhưng tôi không chắc làm thế nào để thực hiện đúng cách.

Câu trả lời:


76

Tôi đã xem qua oh-my-zsh và tìm thấy một nghi phạm có khả năng .

Khi giá trị của biến môi trường TERM bắt đầu bằng screen( giá trị này nằm dưới cả màn hìnhtmux ), nó sử dụng chuỗi điều khiển đầu cuối màn hình để đặt tên của cửa sổ thành

  • (chỉ cần trước khi hiển thị một vỏ nhắc)
    bên trái-hầu hết phần của “dấu ngã nén” đường dẫn của thư mục làm việc hiện hành ( ..tiếp theo là 13 ký tự cuối cùng hoặc toàn bộ đường dẫn nếu nó ít hơn 15 ký tự) và
  • (ngay trước khi bắt đầu một lệnh)
    là người đầu tiên “từ” của lệnh về-to-be-chạy (không tính ssh, sudovà một vài người khác).

Có vẻ như nó đang làm việc theo cách này cho bạn (bạn nói rằng cửa sổ của bạn có tên đã thay đổi thành ~/docskhi bạn ở trong thư mục đó). Nếu bạn muốn tắt tính năng đổi tên tự động này, bạn có thể tắt hoàn toàn nó bằng cách đặt tham số shell DISABLE_AUTO_TITLE thành truetrong .zshrc:

DISABLE_AUTO_TITLE=true

Nếu bạn chỉ đặt cái này trong một vỏ tương tác, bạn sẽ kết thúc bằng một chuỗi trống cho tên của cửa sổ hiện tại, nhưng oh-my-zsh sẽ ngừng cập nhật cửa sổ trước mỗi dấu nhắc và lệnh trong trường hợp shell đó (nó cần phải ở trong của bạn .zshrcđể ảnh hưởng đến tất cả các trường hợp vỏ mới).


4
Đây là một câu trả lời hoàn hảo. Chính xác, nhiều thông tin, súc tích và cho điểm. Hơn nữa, nó cung cấp một giải pháp ngoài việc trả lời câu hỏi ban đầu ("hiểu vấn đề ở đâu"). Thật buồn khi bất cứ ai dành thời gian để hỏi đều không bận tâm đánh dấu đây là câu trả lời.
dmondark

Cảm ơn bạn cảm ơn bạn cảm ơn bạn cảm ơn bạn cảm ơn bạn cảm ơn bạn
Jezen Thomas

một .zshrctập tin cho tất cả người dùng ở đâu?
andilabs

29

Tôi biết rằng câu trả lời ở trên cung cấp cho bạn một giải pháp, nhưng một cách khác là chỉ cần thêm tùy chọn này vào ~ / .tmux.conf

set-option -g allow-rename off

Đây là một giải pháp tốt hơn vì nó chỉ ảnh hưởng đến tmux.
Paul Oliver

Ngay cả với cài đặt này, khung tham gia theo sau là khung ngắt đặt lại tên cửa sổ :(
djsadinoff

6

Tôi đã gặp vấn đề tương tự, đó là tên cửa sổ của tmux đã được thay đổi ngay cả khi đặt trong .tmux.conf:

set-window-option -g automatic-rename off

Cảm ơn câu trả lời của Chris. Tên cửa sổ tmux của tôi không được đổi tên tự động sau khi tôi thay đổi:

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

đến:

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

0

Nếu bạn muốn tắt chỉ đổi tên tự động cho một số cửa sổ nhất định thì bạn có thể sử dụng:

 set -t [WINDOW_NUMBER] automatic-rename off

Vô hiệu hóa tự động đổi tên trong cửa sổ cụ thể trong phiên khác:

 set -t [SESSION]:[WINDOW_NUMBER] automatic-rename off
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.