zle 위젯과 연결된 zsh 함수를 어떻게 찾을 수 있나요?

zle 위젯과 연결된 zsh 함수를 어떻게 찾을 수 있나요?

위젯 을 조작했는데 accept-line원하는 결과를 얻지 못했습니다. 기본 zsh 함수를 찾아서 accept-line에서 무슨 일이 일어나고 있는지 검사하고 기록하고 싶습니다.

제가 이해한 바에 따르면 zle 위젯은 zle -N이 네임스페이스의 값에 키를 매핑하는 작업과 매핑을 복제하는 작업을 통해 별도의 네임스페이스에 존재합니다 zle -A.

꽤 자세히 검색해봤는데zshzle매뉴얼 페이지를 검색하고 인터넷 검색을 했지만 내가 생각해 낼 수 있는 최선의 방법은 zle -l작업을 사용하는 다음과 같습니다.

zle -l  | grep '^accept-line ' | grep -Eo '\(.*\)' | tr -d '()'

의 출력 형식에 직접적으로 의존하지 않는 것이 있습니까 zle -l?

답변1

widgets관련된 모든 위젯과 함수의 이름을 담고 있는 특별한 배열이 있습니다 .

echo $widgets[accept-line]

그러나 일부 위젯은 내부적으로 정의되어 있으며 얻을 수 있는 것은 단어뿐입니다.내장, 하지만 당신의 판단에 따르면grep소스에 포함된 일부 스크립트를 명령합니다..zshrc해당 위젯을 덮어썼으므로 의미 있는 결과를 얻을 수 있습니다.

그런데, 사용 가능한 모든 위젯과 해당 기능을 나열하려면 (kv)플래그를 사용하세요.

echo ${(kv)widgets}

관련 정보