.png)
答え1
私はscreen
専門家ではないので、より良い解決策があるかもしれませんが、あなたにとってこれで十分かもしれません。コマンドslowpaste
としてのみ機能しますpaste
が、xsel
現在のX11選択をファイルにコピーしてから、画面readreg
コマンドを使用してそのファイルをレジスタに読み込むために使用できます。最後に、paste
レジスタの内容を貼り付けることができます。以下は~/.screenrc
私にとって効果的でした。
defslowpaste 100
bindkey ^v exec sh -c 'xsel -o >/tmp/sel; screen -X eval "readreg p /tmp/sel" "paste p"'
現在のウィンドウがまだないため、このスタートアップファイルではミリ秒単位で文字ごとの遅延を使用することはslowpaste
機能しないようですが、デフォルト値を設定するとdefslowpaste
正しく機能します。
これにより、control-v2つのコマンドを含むシェルスクリプトにキーがバインドされます。最初の実行では、xsel -o
X11選択をファイルに入れます/tmp/sel
。 2番目は、2つの組み込みコマンドを使用して画面を呼び出します。 readreg
ファイルをレジスタに読み込み、100ミリ秒の遅延で文字を表示p
します。paste
これはStéphane Chazelasの情報を使用します。回答即時リターンに関して他のコマンドと関連付けることexec
はできませんeval
。答えは、exec
例えばaで置き換え、ファイルが終わるまでユーザー入力...
を読み取ることができるデフォルトの「fdpat」を使用する方法を説明します。xsel
cat
control-D
答え2
一般的なTXレイテンシはないようです。ただし、次のコマンドを使用してテキストを貼り付けるための設定がありますpaste
。screen
slowpaste
コマンド: SlowPaste ミリ秒
コマンド: defslowpaste ミリ秒
(何もない)
貼り付けコマンドを使用して、現在のウィンドウにテキストを挿入する速度を定義します。 Slowpaste 値が 0 でない場合、テキストは文字単位で記録されます。各書き込みの後、アプリケーションは入力を処理できるように画面がミリ秒間一時停止されます。大量のテキストを貼り付けるときにプライマリシステムでフロー制御の問題が発生する場合にのみ、Slowpasteを使用してください。 defslowpaste は、新しいウィンドウのデフォルト値を指定します。
源泉:https://www.gnu.org/software/screen/manual/screen.html
.screenrc
stdinの入力に対して「低速ペーストモード」を取得するには、ファイルに次の行を追加できます。
bindkey ^V exec ... sh -c 'cat >"$HOME/.screen-slowpaste.tmp" && screen -S "$STY" -X eval "slowpaste 1" "readreg p \"$HOME/.screen-slowpaste.tmp\"" "paste p"'
これはstdinの入力を受信する新しいキーバインディングを登録し(CTRLVEOF送信を介して行われます)。この例では、遅延は1ミリ秒に設定されています。cat
CTRLD$HOME/.screen-slowpaste.tmp
readreg
slowpaste 1
SCREENSLOWPASTE="$(cat </dev/stdin)"
入力を環境変数として保存し、レジスタにコピーして一時ファイルをスキップすることもできますregister p "$SCREENSLOWPASTE"
。ただし、このバリエーションは貼り付けることができるテキストの量が非常に制限されており、「コマンドが長すぎます」というエラーがすぐに発生します。