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

おすすめ記事