Bạn đã tìm thấy zle-keymap-select
được thực thi bất cứ khi nào chế độ thay đổi. Bạn có thể sử dụng nó để đặt một số chỉ báo trực quan khác ngoài lời nhắc, tùy thuộc vào thiết bị đầu cuối của bạn hỗ trợ nó (và sở thích của bạn trong hiển thị chỉ báo chế độ, tất nhiên).
Có một khả năng terminfo tiêu chuẩn để thay đổi hình dạng của con trỏ. Tuy nhiên, một số thiết bị đầu cuối hiển thị cùng một con trỏ trong cả hai chế độ. Khái niệm của Xterm về một con trỏ ít nhìn thấy hơn là làm cho nó nhấp nháy (và điều này phải được kích hoạt với -bc
đối số hoặc cursorBlink
tài nguyên dòng lệnh ).
zle-keymap-select () {
case $KEYMAP in
vicmd) print -rn -- $terminfo[cvvis];; # block cursor
viins|main) print -rn -- $terminfo[cnorm];; # less visible cursor
esac
}
Với một số thiết bị đầu cuối, bạn cũng có thể thay đổi màu con trỏ bằng print -n '\e]12;pink\a'
(theo tên màu) hoặc print -n '\e]12;#abcdef\a'
(theo thông số RGB). Các trình tự này được mô tả trong tài liệu xterm, trong ctlseqs
tệp; trình giả lập thiết bị đầu cuối hiện đại thường mô phỏng xterm, mặc dù chúng có thể không hỗ trợ tất cả các tính năng của nó.
CTRL+C
khi ở chế độ vi-lệnh, lời nhắc sẽ đặt lại, nhưng cho biết bạn đang ở chế độ lệnh khi bạn thực sự ở chế độ chèn.zle-line-init
phải luôn luôn thay đổi chỉ báo sang chế độ chèn. Vì một số lý do$KEYMAP
không được cập nhật đúng khi zle-line-init được gọi.