私が本当に好きなemacsバッファ(evenansi-term
と)の機能の1つshell
は、画面の上半分に以前の出力がまだ含まれるように端末の現在の行を「中央に」配置することです。eshell
C-l
標準(標準名が何であるかわからない)端末をC-l
押すと、現在の行がウィンドウの上部に移動するようです。現在行を画面の中央に移動する一般的な方法はありますか?それ以外の場合、iterm2、ターミナル、またはOS Xに移植された一部のターミナルエミュレータに対して特別にこれを行う方法はありますか?
答え1
ほとんどの端末エミュレータはこれを「実行」できますが、いくつかの作業が必要です。
- 移動したい行が画面の下部にあるとしましょう。
- 行を上に移動するには、一番下の行にエスケープシーケンスを送信して行をスクロール(または「インデックス」)します。次に、スクロールする行数だけ行を上に移動します。
- スクロールすると、画面上のすべての行が移動します。スクロール領域を設定して、移動する行数を制限できます。これにより、画面上部の線が消えるのを防ぎます。しかし、線の元の位置と対象の間の線は消えます。
これにより、線が上方向にのみ移動します。同様に、逆索引を使用して 1 行下に移動できます。ところで、こういった仕事は基準ECMA-48ですが、xtermに似ています(DEC vt100ベース)。 ansi-term
スクロール/インデックス作成をサポートします。
結局のところ、それは上または下です。行を左/右に移動するには、カーソルが行の先頭にあるときに文字を挿入または削除するエスケープシーケンスを送信できます。
これらのエスケープシーケンスはterminfo(5)
マニュアルページに文書化されています。私はすでに次のことを言及しています。
csr
(スクロールエリア設定)
ind
(インデックス) (逆方向
rin
インデックス)(カーソル位置)(文字挿入) (文字削除)
cup
ich
dch
追加資料: