Zsh: как увидеть все буферы? - PullRequest
0 голосов
/ 15 апреля 2010

Вы можете поместить вещи в буфер с помощью ^Q и вытолкнуть их с помощью ESC-g. Alt+x vi-set-buffer меняет буфер как-то. Как я могу увидеть все буферы? Это, вероятно, некоторые файлы для просмотра.

1 Ответ

1 голос
/ 16 апреля 2010

^QEsc-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" и пару раз нажмите стрелку влево
...