如何使用 bash 脚本检测 bash readline 的状态?

如何使用 bash 脚本检测 bash readline 的状态?

例如;

if [ 'readline is vi-command' ]; then
  echo 'normal mode'
else
  echo 'insert mode'
fi

我真的不知道如何做到这一点,而且我似乎也无法在手册页上找到任何内容,或者根本有可能吗?

答案1

vi-append-eol(默认为A)仅在命令模式下绑定。因此,通过查询当前是否已绑定,就可以确定当前的模式。

if LC_ALL=C bind -q vi-append-eol | grep -q 'not bound'; then 
  echo 'insert mode'
else
  echo 'normal mode'
fi

LC_ALL=C使用它是因为在其他语言环境中“未绑定”将以另一种语言编写。

当然,没有什么特别的vi-append-eol,还有一堆其他动作仅绑定在其中一种模式中,因此可以使用其中任何一个。

相关内容