比較的頻繁に、私はless
を終了したいと思っていますが、画面に表示されているものをそのままにして、後で参照します。これを行う方法はありますか?回避策は?
(私の現在の回避策は、終了してからmore
を使用することです。そのため、それよりも優れた回避策があれば歓迎します。理想は、おそらくless
に入ったら、おそらくシェル設定またはスクリプト。)
私のデスクトップはOSXですが、RHELおよびUbuntuサーバーを使用しています。
これは実際には、使用しているターミナルエミュレータの機能です(xterm、gnome-terminal、konsole、screen)。代替画面、つまりaltscreenは、less
やvim
などのプログラムが呼び出されたときに起動されます。このaltscreenには履歴バッファーがなく、プログラムを終了するとすぐに終了し、元の画面に戻って前のウィンドウのコンテンツ履歴と配置を復元します。
引数「-X」を渡すことで、less
がaltscreenで起動しないようにすることができます。
less -X /path/to/some/file
「-X」を環境変数として渡すこともできます。したがって、bash
を使用している場合は、これを~/.bashrc
に配置します。
export LESS="-X"
ただし、これにより、termcap(端末機能)の初期化と非初期化が無効になるため、less
を使用すると他のビューが表示されなくなる場合があります。
別のオプションは、screen
を使用し、altscreen off
でオプション~/.screenrc
を設定することです。 less
は画面をクリアせず、色の書式を維持する必要があります。おそらくtmux
も同じオプションを持つでしょう。
この ブログエントリ は問題を説明し、さまざまな成功を収めてgnome-terminal
に固有のいくつかの異なるソリューションを提供します。
これを覚えているのは、less -SEX
です。これは、出力を画面にダンプする必要があるが、行を折り返したくない場合に使用します。たとえば、docker ps | less -SEX
は、次のようになります。
-S
-E
をドロップすると、矢印キーを使用してスクロールできます-E
-X
less -SEX
を思い出せない場合は、あまり望みがありません。推測するたびに、Googleを再設定してください。
ジョージの解決策は私にはうまくいきませんでしたが、この解決策はうまくいきました(彼の回答にリンクされている ブログエントリ から)。
$ infocmp -I xterm > ~/xterm-noclear.src
〜/ xterm-noclear.srcを編集します
2行目の名前を「xterm」から「xterm-noclear」、または自分に合った名前に変更します(「xterm-debian」が存在する場合は変更します)。
「smcup」と「rmcup」の指示を削除します(例:「smcup =\E [?1049h、」と「rmcup =\E [?1049l、」)
$ mkdir ~/.terminfo
$ tic ~/xterm-noclear.src
(x/xterm-noclearが〜/ .terminfoディレクトリに表示されます)
$ export TERM=xterm-noclear
(lessの動作を確認し、問題がなければ、〜/ .profileにエクスポートディレクティブ行を追加します)
(私はこれらの指示を@jahの拒否されたジョージの回答の編集から直接コピーしました。)