less 명령에서 Home/End 키가 작동하지 않는 경우


man 명령을 사용하거나 긴 문서를 페이지 단위로 나누어 보고자 할 때 more 명령과 함께 자주 사용하는 명령으로 less를 사용합니다.

문서의 맨 처음으로 이동하고자 할 때와 맨 마지막으로 이동하고자 할 때 각각 Home 키와 End 키를 사용할 수 있습니다. 하지만 터미널 환경에 따라 이 키들이 작동하지 않는 경우가 있습니다.

다음 중 어느 하나를 선택하여 문제를 해결할 수 있습니다.

  • Home/End 키 값이 rxvt 형식의 키 값이 되도록 합니다. (Xshell 7 빌드 0167 이상)
    Home/End 키는 터미널에서 기본적으로 각각 ^[[1~ 값과 ^[[4~ 값을 발생합니다. less 명령은 이 키 값들을 Home/End 키로 인식하지 않습니다. Xshell 7 빌드 0167 이상 버전으로 업그레이드한 후 Home/End 키 값을 rxvt 형식의 키값으로 보내도록 설정합니다.

    image-20240730-004510.png


    rxvt 형식의 Home/End 키 값은 각각 ^[[H, ^[[F입니다. 이 키 값은 어떤 응용프로그램에서는 Home/End 키로 인식이 되지 않을 수 있습니다.

  • TERM 환경 변수를 linux 등으로 변경
    less는 TERM 환경 변수가 xterm, xterm-256color 등 xterm 계열일 경우 Home/End 키를 인식하지 않습니다. TERM 환경 변수를 xterm-*이 아닌 형식으로 변경하여 해당 키를 적용할 수 있습니다.
    이 경우 xterm 터미널에서만 사용할 수 있는 기능이 제한될 수 있습니다

  • alias 등을 사용하여 less 명령을 사용할 때만 TERM을 변경합니다.

    alias less='_less() { export OLDTERM=$TERM; export TERM=linux; \less $@; export TERM=$OLDTERM;}; _less'

    이 방법은 less를 파이프(|)로 사용할 경우에는 적용할 수 없습니다.

  • less 명령 설정

    1. 새로운 명령 파일 생성

      $ vi ~/lesskey.txt \e[1~ goto-line \e[4~ goto-end

       

    2. lesskey 명령을 사용하여 ~/.less 파일 생성

      $ lesskey -o ~/.less ~/lesskey.txt $ file ~/.less /home/user/.less: data

기존 사용자 환경을 변경하지 않고 less에만 적용하는 마지막 설정을 추천합니다.