
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 とアプリケーションの両方が端末に一貫して書き込まれないため、時折表示不良が発生することがあります。