例如;
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
,还有一堆其他动作仅绑定在其中一种模式中,因此可以使用其中任何一个。