zsh의 내장 라인 편집기( zle
)를 사용하여 하위 프로세스에 입력을 제공할 수 있습니까? 즉, zsh 함수가 있고 zlewrap mycommand
stdin 에서 행을 읽는 모든 프로그램이 효과적으로 실행되고 싶습니다 .zlewrap
mycommand
zlewrap
mycommand
rlwrap
바로 그렇게 하지만 줄 편집을 위해 zle 대신 readline을 사용합니다.
답변1
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와 애플리케이션 모두 터미널에 일관되지 않게 쓰기 때문에 가끔 디스플레이 결함이 발생할 수 있습니다.