Bạn có thể sử dụng display-message -p
để gửi đầu ra tới thiết bị xuất chuẩn để tránh phải trích xuất nó từ đầu ra của show-messages
:
tmux display-message -p '#I'
Bạn có thể chuyển đổi thành các số được khoanh tròn như thế này ( cú pháp bash ; được thử nghiệm với các phiên bản 3.2.48 và 4.2.20):
circled_digits=$(printf %s \${$'\xEA',\`,{a..s}} | iconv -f UTF-16BE)
# circled_digits='⓪①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳'
tmux_winidx_circled() {
local winidx=$(tmux display-message -p '#I')
if (( winidx > 20 )); then
echo "($winidx)"
else
echo "${circled_digits:$winidx:1}"
fi
}
Dòng đầu tiên là tốt ở chỗ nó là ASCII thuần túy; nếu bạn không phiền khi có các ký tự không phải ASCII trong tệp cấu hình của mình, thì bạn có thể đi với dòng thứ hai thay vào đó (nó chắc chắn làm cho ý định rõ ràng hơn, giả sử trình soạn thảo và trình bao của bạn có thể xử lý đúng cách mã hóa tệp).
Sau đó, bạn có thể sử dụng nó như thế này:
PS1="$(tmux_winidx_circled) \W➤ "