GNU画面で「文字転送遅延」を設定するには? (ミニコンピュータのように)

GNU画面で「文字転送遅延」を設定するには? (ミニコンピュータのように)

Minicomには「文字転送遅延」という便利な設定があります。

ミニコンピュータのスクリーンショット

GNU画面にも同様の設定がありますか?

答え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 -oX11選択をファイルに入れます/tmp/sel。 2番目は、2つの組み込みコマンドを使用して画面を呼び出します。 readregファイルをレジスタに読み込み、100ミリ秒の遅延で文字を表示pします。paste

これはStéphane Chazelasの情報を使用します。回答即時リターンに関して他のコマンドと関連付けることexecはできませんeval。答えは、exec例えばaで置き換え、ファイルが終わるまでユーザー入力...を読み取ることができるデフォルトの「fdpat」を使用する方法を説明します。xselcatcontrol-D

答え2

一般的なTXレイテンシはないようです。ただし、次のコマンドを使用してテキストを貼り付けるための設定がありますpastescreenslowpaste

コマンド: SlowPaste ミリ秒

コマンド: defslowpaste ミリ秒

(何もない)

貼り付けコマンドを使用して、現在のウィンドウにテキストを挿入する速度を定義します。 Slowpaste 値が 0 でない場合、テキストは文字単位で記録されます。各書き込みの後、アプリケーションは入力を処理できるように画面がミリ秒間一時停止されます。大量のテキストを貼り付けるときにプライマリシステムでフロー制御の問題が発生する場合にのみ、Slowpasteを使用してください。 defslowpaste は、新しいウィンドウのデフォルト値を指定します。

源泉:https://www.gnu.org/software/screen/manual/screen.html

.screenrcstdinの入力に対して「低速ペーストモード」を取得するには、ファイルに次の行を追加できます。

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ミリ秒に設定されています。catCTRLD$HOME/.screen-slowpaste.tmpreadregslowpaste 1

SCREENSLOWPASTE="$(cat </dev/stdin)"入力を環境変数として保存し、レジスタにコピーして一時ファイルをスキップすることもできますregister p "$SCREENSLOWPASTE"。ただし、このバリエーションは貼り付けることができるテキストの量が非常に制限されており、「コマンドが長すぎます」というエラーがすぐに発生します。

関連情報