^Q
(и Esc-Q
) и Esc-g
работают с буфером emacs, поэтому я не думаю, что они взаимодействуют с буферами vi.
Это работает в режиме emacs (set -o emacs
):
function _showbuffers()
{
local nl=$'\n' kr
typeset -T kr KR $'\n'
KR=($killring)
typeset +g -a buffers
buffers+=" Pre: ${PREBUFFER:-$nl}"
buffers+=" Buffer: $BUFFER$nl"
buffers+=" Cut: $CUTBUFFER$nl"
buffers+=" L: $LBUFFER$nl"
buffers+=" R: $RBUFFER$nl"
buffers+="Killring:$nl$nl$kr"
zle -M "$buffers"
}
zle -N showbuffers _showbuffers
bindkey "^[o" showbuffers
Чтобы продемонстрировать это, попробуйте каждый из этих шагов, нажимая Alt-o (буква «O») или Esc-o после каждого:
- Чтобы показать обрезанный буфер, введите
echo abc
, затем нажмите Ctrl-u
- Чтобы показать список уничтожений (туда перемещается предыдущий буфер вырезания), введите
echo def
, затем нажмите Ctrl-u (или Home Ctrl-K или Ctrl-X Ctrl-K)
- Чтобы отобразить предварительный буфер, введите
echo 'ghi
, нажмите клавишу ввода, введите jkl'
- Нажмите Enter, чтобы выполнить предыдущую команду и очистить текущий буфер (не забудьте нажать Alt-o, чтобы увидеть изменения)
- Чтобы отобразить буферы L и R, введите
echo "mno pqr"
и пару раз нажмите стрелку влево