Вы уже нашли zle-keymap-select
который выполняется каждый раз, когда режим изменяется. Вы могли использовать его для установки некоторого другого визуального индикатора, чем подсказка, в зависимости от того, что терминал поддерживает его (и вкус в дисплее индикатора режима, конечно).
Существует стандарт terminfo возможность изменить форму курсора. Однако некоторые терминалы отображают тот же курсор в обоих режимах. Понятие Xterm менее видимого курсора состоит в том, чтобы заставить его мигнуть (и это должно быть включено с -bc
параметр командной строки или cursorBlink
ресурс).
zle-keymap-select () {
case $KEYMAP in
vicmd) print -rn -- $terminfo[cvvis];; # block cursor
viins|main) print -rn -- $terminfo[cnorm];; # less visible cursor
esac
}
С некоторыми терминалами можно также изменить цвет курсора с print -n '\e]12;pink\a'
(названием цвета) или print -n '\e]12;#abcdef\a'
(спецификацией RGB). Эти последовательности описаны в xterm документации, в ctlseqs
файл; современные эмуляторы терминала обычно эмулируют xterm, хотя они не могли бы поддерживать все его функции.
Partprobe звонит BLKRRPART
ioctl, который документируется в, допускает ошибку, include/linux/fs.h
, и кроме того источник ядра (суть находится в rescan_partitions()
):
#define BLKRRPART _IO(0x12,95) /* re-read partition table */
Самый легкий способ узнать это состоит в том, чтобы работать strace -e raw=ioctl -e open,ioctl partprobe /dev/sdb
.
Я думаю, чем Вы попробовали /sys/*/*scan
говорит ядру проверять, было ли изменение диска. Это не помогает, если диск не изменился (или был заменен в горячем режиме способом, который не обнаруживает ядро?), но структура раздела на нем изменилась.