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다른 로케일에서는 "unbound"가 다른 언어로 작성되기 때문에 사용됩니다.

물론, 특별한 것은 없으며 vi-append-eol, 모드 중 하나에만 바인딩되는 다른 작업이 많이 있으므로 그 중 하나를 사용할 수 있습니다.

관련 정보