จะเปลี่ยนชื่อบานหน้าต่างใน tmux ได้อย่างไร?


คำตอบ:


186

คุณหมายถึง tmux window? Ctrl + b + ,หากคุณมี Cb เป็นคำนำหน้าส่ง (โดยค่าเริ่มต้น)

นอกจากนี้C-b :rename-window <new name>และtmux rename-window <new name>ทำงานด้วย

อย่างที่ฉันรู้ว่าคุณไม่สามารถเปลี่ยนชื่อบานหน้าต่างได้


เมื่อฉันเปลี่ยนชื่อหน้าต่างปัจจุบันฉันไม่สามารถมองเห็นสิ่งที่ฉันกำลังพิมพ์ได้เป็นค่าเริ่มต้นหรือไม่? หรือเป็นเพราะการกำหนดค่าของฉัน? แม้ว่าฉันคิดว่าการกำหนดค่าของฉันไม่ได้ป้องกันไม่ให้tmuxแสดงสิ่งนั้น
zyy

เพื่อชี้แจงคุณสามารถเปลี่ยนชื่อบานหน้าต่างและสิ่งนี้จำเป็นเมื่อเอาต์พุตไบนารีเสียหายโดยไม่ได้ตั้งใจ คำตอบของ @ Mapad ช่วยแก้ปัญหานี้ได้
fuzzyTew

การเปลี่ยนชื่อหน้าต่างเมื่อถามบานหน้าต่างเปลี่ยนชื่อจะกลายเป็นคำตอบที่ยอมรับได้อย่างไร
XMAN

ที่จะเปลี่ยนกลับได้ทุกเมื่อls
anilbey

2
@anilbey เหมือนกันที่นี่. วิธีแก้ปัญหาคือset-option -g allow-rename off
joeytwiddle

36

ใช่คุณสามารถเปลี่ยนชื่อบานหน้าต่างได้และไม่เพียง แต่ชื่อหน้าต่างที่ขึ้นต้นด้วย tmux> = 2.3 เพียงพิมพ์สิ่งต่อไปนี้ในเชลล์ของคุณ:

printf '\033]2;%s\033\\' 'title goes here'

คุณอาจต้องเพิ่มสิ่งต่อไปนี้ใน. tmux.conf ของคุณเพื่อแสดงชื่อบานหน้าต่าง:

# Enable names for panes
set -g pane-border-status top

คุณยังสามารถกำหนดชื่อโดยอัตโนมัติ:

set -g pane-border-format "#P: #{pane_current_command}"

มีวิธีการใส่ args ของคำสั่งลงในรูปแบบ pane border หรือไม่? โอ้มีปัญหาที่เกี่ยวข้องกับ github
konstunn

16

สำหรับการเขียนสคริปต์ tmux มีคำสั่งที่เรียกว่าrename-window เช่น

tmux rename-window -t <window> <newname>

1
ในกรณีของฉันคือ: tmux rename-window -t 9 my-project.
borracciaBlu

8

สำหรับผู้ที่ต้องการเปลี่ยนชื่อบานหน้าต่างได้อย่างง่ายดายนี่คือสิ่งที่ฉันมีในไฟล์ .tmux.conf

set -g default-command '                      \
function renamePane () {                      \
  read -p "Enter Pane Name: " pane_name;      \
  printf "\033]2;%s\033\\r:r" "${pane_name}"; \
};                                            \
export -f renamePane;                         \
bash -i'
set -g pane-border-status top
set -g pane-border-format "#{pane_index} #T #{pane_current_command}"
bind-key -T prefix R send-keys "renamePane" C-m

บานหน้าต่างจะถูกตั้งชื่อโดยอัตโนมัติพร้อมดัชนีชื่อเครื่องและคำสั่งปัจจุบัน ในการเปลี่ยนชื่อเครื่องคุณสามารถเรียกใช้<C-b>Rซึ่งจะแจ้งให้คุณป้อนชื่อใหม่

* การเปลี่ยนชื่อบานหน้าต่างจะใช้งานได้เมื่อคุณอยู่ในเชลล์เท่านั้น


4

นอกจากนี้เมื่อเขียนสคริปต์คุณสามารถระบุชื่อเมื่อสร้างหน้าต่างด้วย-n <window name>. ตัวอย่างเช่น:

# variable to store the session name
SESSION="my_session"

# set up session
tmux -2 new-session -d -s $SESSION

# create window; split into panes
tmux new-window -t $SESSION:0 -n 'My Window with a Name'

3

ตัวเลือกที่ง่ายที่สุดสำหรับฉันคือเปลี่ยนชื่อเทอร์มินัลแทน โปรดดู: /superuser/362227/how-to-change-the-title-of-the-mintty-window

ในคำตอบนี้พวกเขากล่าวถึงการแก้ไขตัวแปร PS1 หมายเหตุ: สถานการณ์ของฉันเป็นเรื่องเฉพาะสำหรับ cygwin

TL; DR ใส่สิ่งนี้ในไฟล์. bashrc ของคุณ:

function settitle() {
      export PS1="\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n$ "
      echo -ne "\e]0;$1\a"
}

ใส่สิ่งนี้ในไฟล์. tmux.conf หรือการจัดรูปแบบที่คล้ายกัน:

set -g pane-border-status bottom
set -g pane-border-format "#P #T #{pane_current_command}"

จากนั้นคุณสามารถเปลี่ยนชื่อของบานหน้าต่างโดยพิมพ์สิ่งนี้ในคอนโซล:

settitle titlename

0

คุณสามารถปรับชื่อบานหน้าต่างได้โดยการตั้งค่าขอบบานหน้าต่างใน tmux.conf เช่นนี้:

###############
# pane border #
###############
set -g pane-border-status bottom
#colors for pane borders
setw -g pane-border-style fg=green,bg=black
setw -g pane-active-border-style fg=colour118,bg=black
setw -g automatic-rename off
setw -g pane-border-format ' #{pane_index} #{pane_title} : #{pane_current_path} '
# active pane normal, other shaded out​
setw -g window-style fg=colour28,bg=colour16
setw -g window-active-style fg=colour46,bg=colour16

โดยที่ pane_index, pane_title และ pane_current_path เป็นตัวแปรที่จัดเตรียมโดย tmux เอง

หลังจากโหลดการกำหนดค่าใหม่หรือเริ่มเซสชัน tmux ใหม่จากนั้นคุณสามารถตั้งชื่อของบานหน้าต่างปัจจุบันได้ดังนี้:

tmux select-pane -T "fancy pane title";
#or
tmux select-pane -t paneIndexInteger -T "fancy pane title";

หากบานหน้าต่างทั้งหมดมีกระบวนการทำงานอยู่ดังนั้นคุณจึงไม่สามารถใช้บรรทัดคำสั่งได้คุณยังสามารถพิมพ์คำสั่งหลังจากกดการโยงคำนำหน้า (Cb โดยค่าเริ่มต้น) และเครื่องหมายโคลอน (:) โดยไม่ต้องมี "tmux" ที่ด้านหน้าของ คำสั่ง:

select-pane -T "fancy pane title"
#or:
select-pane -t paneIndexInteger -T "fancy pane title"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.