วิธีเปลี่ยนชื่อบานหน้าต่างในtmux
?
วิธีเปลี่ยนชื่อบานหน้าต่างในtmux
?
คำตอบ:
คุณหมายถึง tmux window? Ctrl + b + ,
หากคุณมี Cb เป็นคำนำหน้าส่ง (โดยค่าเริ่มต้น)
นอกจากนี้C-b :rename-window <new name>
และtmux rename-window <new name>
ทำงานด้วย
อย่างที่ฉันรู้ว่าคุณไม่สามารถเปลี่ยนชื่อบานหน้าต่างได้
ls
set-option -g allow-rename off
ใช่คุณสามารถเปลี่ยนชื่อบานหน้าต่างได้และไม่เพียง แต่ชื่อหน้าต่างที่ขึ้นต้นด้วย 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}"
สำหรับการเขียนสคริปต์ tmux มีคำสั่งที่เรียกว่าrename-window
เช่น
tmux rename-window -t <window> <newname>
tmux rename-window -t 9 my-project
.
สำหรับผู้ที่ต้องการเปลี่ยนชื่อบานหน้าต่างได้อย่างง่ายดายนี่คือสิ่งที่ฉันมีในไฟล์ .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
ซึ่งจะแจ้งให้คุณป้อนชื่อใหม่
* การเปลี่ยนชื่อบานหน้าต่างจะใช้งานได้เมื่อคุณอยู่ในเชลล์เท่านั้น
นอกจากนี้เมื่อเขียนสคริปต์คุณสามารถระบุชื่อเมื่อสร้างหน้าต่างด้วย-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'
ตัวเลือกที่ง่ายที่สุดสำหรับฉันคือเปลี่ยนชื่อเทอร์มินัลแทน โปรดดู: /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
คุณสามารถปรับชื่อบานหน้าต่างได้โดยการตั้งค่าขอบบานหน้าต่างใน 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"
tmux
แสดงสิ่งนั้น