首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用zle小部件选择整个缓冲区?

如何使用zle小部件选择整个缓冲区?
EN

Unix & Linux用户
提问于 2023-06-01 10:25:40
回答 1查看 31关注 0票数 2

我有一个zle小部件,如:

代码语言:javascript
复制
_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

因此,我想取代:

代码语言:javascript
复制
if [ "$BUFFERLINES" -gt 1 ]; then
  zle end-of-buffer-or-history
else
  zle end-of-line
fi

使用

代码语言:javascript
复制
zle end-of-buffer

但是似乎没有end-of-buffer的小部件。

我能做什么?

P.S.如果我可以使用MARK变量选择整个缓冲区,那将是一次很好的学习体验。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2023-06-01 17:41:20

小部件代码中,不仅可以读取而且还可以修改变量,如MARKCURSORBUFFER等。

若要将光标移动到缓冲区的末尾,请执行以下操作:

代码语言:javascript
复制
CURSOR=$#BUFFER

要选择整个缓冲区,标记在开头,光标在末尾,您不需要调用任何小部件:只需设置适当的变量即可。

代码语言:javascript
复制
function _ctrl-a {
  MARK=0
  CURSOR=$#BUFFER
  REGION_ACTIVE=1
}
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/747715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档