画面をクリアせずに「少なく」終了する方法はありますか?


68

比較的頻繁に、私は自分自身をやめたいと思うlessが、画面に表示していたものを残して、参照し直します。これを行う方法はありますか?回避策は?

(私の現在の回避策は、終了してから使用することmoreです。ですから、それよりも良い回避策は歓迎されます。理想はless、シェル設定またはスクリプトを使用して、すでに中に入ったら使用できるものです。)

私のデスクトップはOSXですが、RHELおよびUbuntuサーバーを使用しています。


1
長い出力(in git diffまたはgit logless -Xを読み込むと、端末のスクロールバッファーが占有され、以前の出力の多くが削除されます。less終了時に最後の画面一杯の出力で終了することができればそれが大好きです。つまり、終了後にスクロールバッファの1ページしか取得されませんless。何か案は?
ムシフィル14年

ところで、-R通常はの場合よりも安全な選択です-r
ムシフィル

ありがとう。不思議に思う人のために:-R is "Like -r, but only ANSI "color" escape sequences are output in "raw" form. Unlike -r, the screen appearance is maintained correctly in most cases."
スティーブベネット

@musiphilおそらく-c?
ヴァネッサフィップス

@MatthewPhipps:中-cを動き回るときに画面を更新する方法についてですless
ムシフィル14年

回答:


68

これは実際には、使用している端末エミュレーターの機能です(xterm、gnome-terminal、konsole、screen)。ようなプログラム場合、代替画面、またはALTSCREENは、起動されますlessまたはがvim呼び出されます。このaltscreenには履歴バッファーがなく、プログラムを終了するとすぐに終了し、元の画面に戻り、以前のウィンドウコンテンツの履歴と配置が復元されます。

less引数「-X」を渡すことにより、altscreenでの起動を防ぐことができます。

less -X /path/to/some/file

環境変数として「-X」を渡すこともできます。したがって、使用している場合はbash、これを~/.bashrc次の場所に配置します。

export LESS="-X"

ただし、これによりtermcap(端末機能)の初期化と初期化解除が無効になるため、使用中の他のビューlessが表示されなくなる場合があります。

別のオプションは使用することですscreenし、オプションを設定しaltscreen off、あなたに~/.screenrcless画面をクリアせず、色の書式を保持する必要があります。おそらくtmux同じオプションがあります。

このブログエントリでは、問題について説明しgnome-terminal、さまざまな成功を収めている特定のソリューションを提供しています。


2
パーフェクト。欠点はありますか?
スティーブベネット

2
待って、私はすでに1つを発見しました-の出力git log(そしておそらく他の色の付いたコマンド)は台無しにされています。
スティーブベネット

1
@SteveBennettそれは十分に小さいので、エイリアスにしますalias les="/usr/bin/less -X"
。– bonsaiviking

4
ちょっと、私はちょうどgit log上の問題に対する解毒剤を発見したと思う:export LESS="-r -X"。(その副作用が何であるかわかりません...)
スティーブベネット

5
実際には、git設定LESSに変数をFRSXあなただけ残すことができるので、それは、ページャを実行するとき、それが設定されていない場合はLESS設定しないとless、自動的に実行されます-FRSX。探しcore.pagergit-config(1)より多くの情報のため。
musiphil

4

ジョージの解決策は私にはうまくいきませんでしたが、この解決策はうまくいきました(彼の答えにリンクされているブログエントリから)。

  1. $ infocmp -I xterm > ~/xterm-noclear.src

  2. 〜/ xterm-noclear.srcを編集します

    • 2行目の名前を「xterm」から「xterm-noclear」、またはあなたに合ったものに変更します(存在する場合は「xterm-debian」も変更します)

    • 'smcup'および 'rmcup'の指示を削除します(例: "smcup = \ E [?1049h、"および "rmcup = \ E [?1049l、")

  3. $ mkdir ~/.terminfo

  4. $ tic ~/xterm-noclear.src (x / xterm-noclearは〜/ .terminfoディレクトリに表示されます)

  5. $ export TERM=xterm-noclear (今度はlessの動作を確認し、満足したら、〜/ .profileにexportディレクティブ行を追加します)

(これらの指示は、ジョージの答えの@jahの拒否された編集から直接コピーしました。)


4

私がこれを覚えているのはless -SEX、出力を画面にダンプする必要があるが、行を折り返したくない場合です。たとえば、docker ps | less -SEXこれは次のとおりです。

  • -S
    • ラップではなくスクロール
    • をドロップすると-E、矢印キーを使用してスクロールできます
  • -E
    • EOFに達したら終了する
  • -X
    • 用語のスワップ/ブランキングを防ぐ
    • 「記憶」の部分は、SとEが何をするかを知っているということです。したがって、これは他の部分でなければなりません。(そして、このコマンドをメモリにコミットする理由は、ラップされていない出力をダンプする(インタラクティブセッションに入らない)ためです。

覚えていない場合less -SEXは、あまり希望はありません。私が推測するたびにちょうど再グーグル。


男は問題があり、あなたは彼に少ないセックスを提供していますか?
ヨシコ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.