我有一个 zle 小部件,例如:
_ctrl-a() {
CURSOR=0
if ((MARK == 0)); then
zle set-mark-command
fi
if [ "$BUFFERLINES" -gt 1 ]; then
zle end-of-buffer-or-history
else
zle end-of-line
fi
}
zle -N _ctrl-a
bindkey '^A' _ctrl-a # Ctrl+A
它选择整个缓冲区。我的意思是它将光标放在缓冲区的开头,开始标记然后将光标放在缓冲区的末尾。
在这里,我用于多行命令的小部件是end-of-buffer-or-history
,但是,我希望它是end-of-buffer
。
所以,我想更换:
if [ "$BUFFERLINES" -gt 1 ]; then
zle end-of-buffer-or-history
else
zle end-of-line
fi
和
zle end-of-buffer
但是好像没有widget for end-of-buffer
.
我能做些什么?
PS如果我能使用变量选择整个缓冲区,那将是一个很好的学习经验MARK
。
在小部件代码中,您不仅可以读取还可以修改
MARK
,CURSOR
,BUFFER
等变量。将光标移动到缓冲区的末尾:
要选择整个缓冲区,标记在开头,光标在结尾,您不需要调用任何小部件:只需设置适当的变量。