Zsh:如何查看所有缓冲区?

时间:2010-04-15 16:28:12

标签: buffer zsh

您可以使用^Q将内容推送到缓冲区,然后使用ESC-g弹出它们。 Alt+x vi-set-buffer以某种方式更改缓冲区。我怎样才能看到所有的缓冲区?它们可能是一些要查看的文件。

1 个答案:

答案 0 :(得分:1)

^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
  • 要显示kill ring(前一个剪切缓冲区移动到那里),请键入echo def,然后按Ctrl-u(或Home Ctrl-K或Ctrl-X Ctrl-K)
  • 要显示预缓冲区,请键入echo 'ghi,按Enter键,键入jkl'
  • 按Enter执行上一个命令并清除当前缓冲区(不要忘记按Alt-o查看更改)
  • 要显示L和R缓冲区,请键入echo "mno pqr"并按两次左箭头