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.

파일에는 세 부분이 포함되어 있습니다.

  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번째 줄 앞의 두 줄을 반대로 바꿉니다
    .

    /*
     * 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
    
  • 이 두 가지 기술을 결합

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

답변2

예를 들어 쉘 초기화에서 환경을 설정(또는)하여 각 터미널 유형에 대해 less다른 파일을 읽을 수 있습니다 . 이를 수행하는 쉬운 방법은 변수를 파일 이름의 일부로 사용 하고 변수를 설정하기 전에 이러한 터미널 관련 파일이 존재하는지 쉘에서 확인하도록 하는 것입니다 .lesskeyLESSKEYLESSKEY_SYSTEMTERMLESSKEY

관련 정보