zsh의 내장 라인 편집기 ( zle
)를 사용하여 서브 프로세스에 입력을 공급할 수 있습니까? 즉, zsh 함수가있는 zlewrap mycommand
곳 에서 stdin에서 행을 읽는 프로그램입니다. zle의 라인 편집 기능을 효과적으로 제공합니다 . 이것은 단지 이것을 수행 하는 모델에 있지만 라인 편집을 위해 zle이 아닌 readline을 사용합니다.zlewrap
mycommand
zlewrap
mycommand
rlwrap
답변
GNU 화면을 사용하는 방법은 다음과 같습니다.
라는 파일을 넣어 zf
당신에 $PATH
와를 :
#! /usr/bin/env zsh
zmodload -i zsh/zle
trap 'printf "\03"; exit' INT
HISTSIZE=100
while a=; vared -p "${2:-zle> }" -eh a; do
{
s=$(stty -g)
stty -echo -iexten -isig lnext '' werase '' eof '' rprnt '' kill ''
printf "%s\r" "$a"
print -rs -- "$a"
stty "$s"
} < $1
done
printf "\04"
그런 다음 화면에서 필터를 다음과 같이 실행하십시오.
<Ctrl-A>:exec .!. zf /dev/pts/x "> "
/ dev / pts / x를 실제 Windows pty ( tty
창의 명령 출력)로 바꾸고 표시 할 프롬프트로 “>”를 바꾸십시오.
zsh와 응용 프로그램이 모두 인증되지 않은 방식으로 터미널에 쓰므로 가끔씩 디스플레이 결함이 발생합니다.