zsh의 라인 편집기를 사용하여 하위 프로세스 둘러싸기

zsh의 라인 편집기를 사용하여 하위 프로세스 둘러싸기

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

원래 출판된 시기http://www.zsh.org/mla/users/2005/msg00186.html

관련 정보