lesskeyを端末と​​は無関係にするには?

lesskeyを端末と​​は無関係にするには?

Bashスクリプトでは、tput端末に関係なく、より少ない変数を設定できます。

export LESS_TERMCAP_me=$(tput sgr0; )

で同じことができますかlesskey

答え1

短い答え

  • はい変数をファイルに入れることはできますが、LESS_TERMCAP_meソースlesskeyコードを修正して独自のlessバージョンを構築する必要があります(以下で説明します)。

  • いいえファイルには、端末に拘束されないlesskey外部コマンドを含めることはできません。tputただし、lesskey以下の提案に従って複数のファイルを使用できます。トーマスディキの答え

lesskey文書

注文するlesskey人間が読めるテキストコンテンツをコマンドに変換するために使用されるバイナリ設定ファイルless。構成ファイルの名前は次のとおりです。lesskey文書通常ファイル~/.less

ファイルには3つの部分が含まれています。

  1. 注文する(例えば:q quit
  2. ライン編集(例えば^G abort
  3. less環境変数(例えばLESS_TERMCAP_me = \033(B\033[m

変数をファイルLESS_TERMCAP_*に入れるlesskey

$ cat > lesskey.txt << EOF
#env
LESS = -iSrsM +Gg
LESS_TERMCAP_md = $(tput bold; tput setaf 6)
LESS_TERMCAP_me = $(tput sgr0)
LESS_TERMCAP_so = $(tput bold; tput setaf 3; tput setab 4)
LESS_TERMCAP_se = $(tput rmso; tput sgr0)
LESS_TERMCAP_us = $(tput smul; tput bold; tput setaf 7)
LESS_TERMCAP_ue = $(tput rmul; tput sgr0)
LESS_TERMCAP_mr = $(tput rev)
LESS_TERMCAP_mh = $(tput dim)
EOF

$ lesskey lesskey.txt  # By default lesskey writes ~/.less

$ man bash             # By default man uses less (pager)

抜け穴

このコマンドは、less設定が~/.less遅すぎます。
つまり、変数を検索した直後ですLESS_TERMCAP_*

このエラーは影響を与えます。バージョン 4872017年3月29日にリリースされました(もちろん以前のバージョンで)。

バグレポートとその修正を管理者に送信しました。次のバージョンに修正が適用されたら、この回答を更新しますless...

自分で修正する

  1. 以下からソースコードアーカイブをダウンロードしてください。

  2. main.cファイルの113行目の前の2行を逆に置き換えます

    /*
     * Process command line arguments and LESS environment arguments.
     * Command line arguments override environment arguments.
     */
    is_tty = isatty(1);
    get_term();
    init_cmds();
    init_charset();
    init_line();
    

    後ろに:

    /*
     * Process command line arguments and LESS environment arguments.
     * Command line arguments override environment arguments.
     */
    is_tty = isatty(1);
    init_cmds();         /* Load lesskey file before */ 
    get_term();          /* getting variables LESS_TERMCAP_* */
    init_charset();
    init_line();
    
  3. ビルドに必要な依存関係をインストールします。

    ./configure
    

    ./configure失敗した場合、欠落している依存関係を識別します。私の場合はget headerを
    インストールしました。ncurses-develterm.h

  4. 立てる

    make 
    
  5. less個人用ディレクトリなど、どこかにコンパイルしたコンテンツを保存します。~/bin

    mkdir -p ~/bin
    cp ./less ~/bin
    PATH="$PATH:~/bin"
    

    PATHファイルに環境変数を設定することを忘れないでください。 ~/.profile他のファイルを好む場合は~/.bashrc...~/.login

追加のヒント

  • TERMCAPS使い方はマニュアルページをご覧ください。

    LESS_TERMCAP_DEBUG=1 man bash
    
  • TERMCAPSエンコーディングを使用してマニュアルページを検索する

    MANPAGER='tee man.txt' man bash
    
  • これら2つの技術を組み合わせる

    MANPAGER='tee man.txt' man bash
    LESS_TERMCAP_DEBUG=1 less man.txt
    

答え2

たとえば、シェル初期化で環境を設定(または)して、各端末タイプごとにless異なるファイルを読み取ることができます。これを行う簡単な方法は、変数をファイル名の一部として使用し、変数を設定する前に、これらの端末関連ファイルが存在するかどうかをシェルで確認することです。lesskeyLESSKEYLESSKEY_SYSTEMTERMLESSKEY

関連情報