Less를 통해 하이라이트를 구 문화하는 방법


133

Less에서 볼 파일을 구문 강조하는 방법이 있습니까?

실제로 나는이 명령을 사용하여 XML 파일 (및 때로는 일련의 파일)을 엽니 다

less htmleditors/htmleditors_config.xml

또는

less [multiple files]

나는 Less에 머물고 싶다 (그 프로그램을 더 잘 배우고 다음 / 이전 탐색을 위해 : n 및 : p에 대한 지식을 사용하기 위해)

그러나 어떤 종류의 기본 구문 강조가 필요합니다. 적어도 주석을 다르게 표시하십시오. 당신은 그것을 할 수있는 방법을 알고 있습니까?

답변:


123

여기에 표시된 대로 GNU의 source-highlight를 사용할 수 있습니다 (경로가 다를 수 있음, 아래 참조).

 export LESSOPEN="| /usr/bin/src-hilite-lesspipe.sh %s"
 export LESS=' -R '

데비안 스트레치와 페도라 25부터 패키지 이름과 스크립트 경로가 다릅니다

  • 데비안 :

    sudo apt install libsource-highlight-common source-highlight
    dpkg -L libsource-highlight-common | grep lesspipe
    # /usr/share/source-highlight/src-hilite-lesspipe.sh
    
  • 페도라 :

    sudo dnf install source-highlight
    rpm -ql source-highlight | grep lesspipe
    # /usr/bin/source-highlight/src-hilite-lesspipe.sh
    

실행할 때 다음 오류 메시지를 검색합니다 less ~/.zshrc. 오류 : src-hilite-lesspipe.sh: line 9: source-highlight: command not found. MacOSX에서 이것을 실행합니다.
JJD

2
@JJD 소스 하이라이트를 설치 했습니까?
Max Nanasy

13
OSX : brew install source-highlight; export LESSOPEN="| /usr/local/bin/src-hilite-lesspipe.sh %s". 경로 변경에 유의하십시오.
Gregg Lind

23
데비안에서 : sudo apt-get install source-highlight, export LESSOPEN="| /usr/share/source-highlight/src-hilite-lesspipe.sh %s",export LESS=' -R '
모건 쿠르베

3
작은 경고 : source-highlight는 현재 마크 다운을 지원하지 않습니다.
dhulihan

97

이전 답변 중 가장 좋은 점 :을 눌러 시스템 기본 편집기를보다 적게 호출 할 수 있습니다 v.


3
와! 이것은 놀랍게도 유용합니다!
dancek

13
우분투 상자에서 나노를 연 저주!
jamesc

5
그런 다음 $ EDITOR 또는 $ VISUAL을 vim (또는 emacs 또는 gedit, joe, ed, mined 또는…)으로 설정하십시오.
Daniel H

@ jamesc 참고로 Nano에서 구문 강조를 활성화 할 수 있습니다 . 방법은 다음 과 같습니다 .
Captain Man

@CaptainMan 아뇨 아뇨 아뇨! Daniel H가 말한 것처럼 기본값을 다시 vim으로 변경합니다! : D
jamesc

33
pygmentize somefile.ex | less -R

또는

function cless () {
    pygmentize -f terminal "$1" | less -R
}

Pygmentize는 Pygments Python 구문 highliter 의 일부로 제공됩니다 .


3
pygmentize또한 LESSOPEN다른 답변에서 언급 된 내용 과 함께 작동 합니다.
Nathan

2
을 얻으려면 pygmentizePython이 필요하고을 사용 pygmentize하여 설치할 수 있습니다 pip install pygments.
wkschwartz

3
얻으려면 less사용하는 pygmentize구문 강조 사용을 위해 : which pygmentize 2> /dev/null >&2 && export LESSOPEN="| pygmentize -g -f terminal256 %s". -g파이프 ( less <(diff -u file1 files)) 와 함께 작동하도록하십시오 . 에 대한 및 community/pygmentize패키지로 제공됩니다 . arch linuxpython-pygmentsdebian
x-yuri

의 출력이 마음에 pygmentize들지만 너무 느립니다. 나는 더 빠르고 여전히 256 색 의이 대답 을 생각해 냈습니다 .
Tom Hale

16

텍스트 편집기를 사용해야한다고 생각합니다. 나는 vim을 좋아한다. 그러면 파일을 볼 때 많은 힘을 얻을 수 있으며 편집 할 때 이미 기본 사항을 알 수 있습니다.

텍스트 편집기 (특히 vim)를 사용하면 다음과 같은 장점이 있습니다.

  • 구문 강조
  • 강력한 운동 명령
  • 검색
  • 파일의 특정 위치로 이동 (마크라고 함)
  • 접기 (기능 스텁을보고 싶을 때 유용함)

파일을 읽기 전용 모드로 열려면 다음을 사용하십시오.

vim -R <file name>

기본 탐색 가이드는 다음과 같습니다.

j - move down one line
k - move up one line
h - left one char
l -right one char

ctrl-f - forward one page
ctrl-b - back one page

/<something> - search for something
n - next of whatever you searched for
N - next (search backwards) of whatever you searched for

:q - quit
:q! - quit without saving
:w - save

자세한 내용은 다음 링크를 참조하십시오.

http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html

간단히 말해, 유닉스 vim을 사용한다면 꽤 근본적입니다. vim을 배우는 것은 타이핑을 배우는 것과 같다고 들었습니다. 프로그래밍에 대해 배울 수있는 다음으로 유용한 도구입니다.

(편집자 전쟁을 피하기 위해 emacs 또는 다른 편집자를 볼 수도 있지만 개인적으로 vim을 선호합니다)


1
나는 이것을 두 번째로한다. Vim은 더 빨리 시작되며 많은 키보드 단축키 (예 : 검색, 다음 페이지, 이전 페이지)가 동일합니다.
제레미 W. 셔먼

10
많은 시스템에서 FYI view는의 별칭입니다 vim -R.
Andrew Ferrier

15

다른 사람들이 말했듯이, 당신은 vim의 힘을 사용할 수 있습니다. 그러나 중요한 것은 vi / vim 사용법을 배우지 않고도 그렇게 할 수 있다는 것입니다.

Vim에는 less.vim전체 색상 구문 강조 표시를 사용하여 적은 대체 용으로 잘 작동 하는 스크립트가 제공됩니다 . less키 바인딩을 사용합니다 ( 'q'를 눌러 종료).

몇 가지 문제가 있었으므로 개선했습니다 . 여기 내 블로그 게시물 의 스크린 샷이 있습니다 (아카이브 2013-04-09; 원본 던지기 503) :

https://github.com/huyz/less.vim의 스크린 샷


2
대박! 그러나 스크립트를 바로 찾을 수 없었으므로 스크립트를 찾기위한 명령을 공유하고 싶습니다 find /usr/share/vim -name 'less.sh'. gist.github.com/chauncey-garrett/9773770
nuala

@yoshi의 주석에 추가하고 vimless명령 을 빠르게 추가 하려면 (의 명명법에 따라 vimdiff) 다음을 수행하십시오.ln -s $(find /usr/share/vim -name 'less.sh') /usr/local/bin/vimless
waldyrious

링크는 404입니다!
acgtyrant

@acgtyrant 지금 수정해야합니다. 인터넷 아카이브는 고맙게도 그것을 가지고 있습니다.
bb010g

10

나는 이것을 찾고 있었고 Vim을 사용하여 다른 해결책을 찾았습니다 : http://ubuntu-tutorials.com/2008/07/14/use-vim-as-a-syntax-highlighting-pager/

게시물이 다소 오래되었으므로 이제 더 최근 배포판에서 vim 7.2가 제공되고 .bashrc는 다음과 같이 읽습니다. alias vless = 'vim -u /usr/share/vim/vim72/macros/less.vim'


1
MacVim은 다음 위치에 직접 사용할 수있는 쉘 스크립트를 제공합니다. /Applications/MacVim.app/Contents/Resources/vim/runtime/macros/less.sh
Nick

1
이 기능은 아래에 빔 자체에 설명되어 있습니다:help less
joeytwiddle

8

and와 같은 호출기에 구문 강조 지원을 제공 하는 새로운 패키지 e2ansi 를 발표하게되어 기쁩니다 .moreless

이 패키지는 모든 텍스트 편집기의 어머니 인 Emacs 를 사용하여 실제 구문 강조를 수행합니다. 또한 보너스로 압축 해제 파일과 같이 Emacs에서 일반적으로 수행하는 다른 모든 변환도 수행됩니다.

다음은 lessand를 사용하여 파일을 본 결과입니다 e2ansi.

예

구성

이 패키지는 e2ansi-cat배치 모드에서 Emacs를 시작하고 파일을 열고 구문을 강조 표시하고 ANSI 시퀀스를 사용하여 결과를 렌더링 하는 명령 줄 도구 를 제공합니다 .

less예를 들어 다음과 같은 변수를 설정하여 이를 통합 할 수 있습니다 (init 파일의 위치가 다를 수 있음).

export "LESSOPEN=||-/usr/local/emacs --batch -Q -l ~/.emacs -l bin/e2ansi-cat %s"
export "LESS=-r"
alias "more=less -X -E"

위의 구성 less에서 원래 터미널 창 내용을 복원 more하면서 프롬프트 후에 새 내용을 출력하면됩니다.

참고 :의 이전 버전을 사용하는 경우 또는 구문을 less지원하지 않을 수 있으며이 경우 간단하게 사용해야 합니다.||-LESSOPEN=|/usr/local/emacs ...

less파이프에서 사용

"-"문자는 LESSOPEN텍스트를로 파이핑 할 때 입력 필터도 사용해야 함을 나타냅니다 less. 이 경우 Emacs는 파일 자체가 아닌 텍스트에만 의존 할 수 있습니다. 다행히 Emacs는이를위한 시스템을 제공합니다. 또한 제공된 파일 파일 e2ansi-magic.el은 추가 파일 유형을 설정합니다. 예를 들면 다음과 같습니다.

파이프 예

왜 이맥스를 사용 하는가?

  • Emacs는 거의 모든 프로그래밍 언어와 구조화 된 텍스트 형식을 지원합니다. 대부분의 경우 구문 강조 지원이 우수합니다.
  • 더 많은 언어와 형식에 대한 지원을 쉽게 추가하거나 필요에 따라 기존 패키지를 수정할 수 있습니다.
  • 이맥스는 색상 테마를 지원합니다. 를 사용하면 e2ansi에서 파일을 볼 때 테마의 색상이 유지됩니다 less. 여러 소스에서 적절한 색상 테마를 선택하거나 직접 디자인 할 수 있습니다.
  • Emacs를 선택한 편집기로 사용하는 경우 파일을 볼 때와 동일한 강조 표시가 편집기에서 강조 표시됩니다 less(ANSI 시퀀스 형식 및 터미널 창의 마이너스 제한).
  • less압축 해제 파일과 같은 자동 변환을 수행하는 Emacs 기능을 활용합니다. 실제로 Emacs가 외부 도구를 사용하여 이진 파일을 사람이 읽을 수있는 형태로 자동 변환하는 것과 같은 모든 종류의 변환을 수행하도록 지시 할 수 있습니다.
  • 원격 액세스를 위해 Emacs의 구문을 사용하여 다른 컴퓨터에있는 파일을 볼 수 있습니다 /USER@HOST:FILENAME.

유용한 링크

운영 체제 노트

  • MS Windows에서 콘솔은 기본적으로 ANSI 시퀀스를 지원하지 않습니다. 다행히 less응용 프로그램에서 렌더링 할 수 있습니다. lessMS Windows 용 현대 이진 배포판을 모르고 제공된 빌드 파일을 사용하기가 어렵습니다. 다행히 CMake 를 사용 less하여 쉽게 빌드 할 수 있습니다. 자세한 내용 은 이 텍스트 를 참조하십시오.

  • OS X는의 고대 버전을 배포합니다 less. 다행히도 소스에서 직접 최신 버전을 쉽게 구축 할 수 있습니다.


OS X, 나는 패키지 관리자를 사용하는 것이 좋습니다 것 양조 [ brew.sh/]양조 속는 [ github.com/Homebrew/homebrew-dupes]을 같은 것들의 최신 버전을 설치합니다 less.
drevicko

"emacs 제공"-파일을보기 위해 전체 VM을 실행합니까? ;-) 및 +1
Alois Mahdal

6

당신이있는 경우 GNU 소스 - 하이라이트가 설치된 단일 파일의 구문을 강조하기 위해 다음 명령을 사용할 수 있습니다 :

$ src-hilite-lesspipe.sh yourfile.xml | less -R

src-hilite-lesspipe.sh파이프를 통해서도 입력을받을 수 있습니까 ?
waldyrious

2

source-highlight.sh스크립트가 있습니다 /usr/share/source-highlight/*.sh. 에 이름 hcat을 가진 기호 링크를 만들었습니다 /usr/bin.

터미널 (콘솔)에서 강조 표시된 출력을 hcat표시합니다. – 고양이로 강조 표시됩니다.

어떻게:

[me@this]<bash><~> 43 
21:23 Fri Apr 19 > sudo apt-get install source-highlight

[me@this]<bash><~> 28 
21:03 Fri Apr 19 > ll /usr/share/source-highlight/*.sh
-rwxr-xr-x 1 root root 432 May  1  2012 /usr/share/source-highlight/src-hilite-lesspipe.sh*

[me@this]<bash><~> 29 
21:04 Fri Apr 19 > sudo su
root@this:/home/me# cd /usr/bin/
root@this:/usr/bin# ln -s /usr/share/source-highlight/src-hilite-lesspipe.sh hcat

[me@this]<bash><~> 36 
21:07 Fri Apr 19 > hcat test.xml

2

OS X 10.9 (Maverick)를 사용하면 다음과 같은 트릭이 수행됩니다.

  • brew install source-highlight (브루가 설치되어 있다고 가정-http: //brew.sh )
  • sudo nano /etc/launchd.conf

    setenv LESSOPEN="| /usr/local/bin/src-hilite-lesspipe.sh %s"     
    setenv LESS=' -R '
    

    (/etc/launchd.conf에 추가)

  • 재부팅


0

Mac에서는을 입력 view filename하고 덜 유사한 것을 수행 할 수 있습니다 .


1
OSX와 함께, view filename단지 시작 vim기본적으로 - 약간 다른 키 바인딩하기 less(자세한 내용은이 질문에 다른 답변을 참조).
drevicko

0

GNU의 source-highlight ( dev-util/source-highlightsabayon / gentoo 패키지) 를 설치 한 후 다음과 같은 환경을 구성했습니다 /etc/bash/bashrc.d/my-less-src-highlight.

#default:    export LESSOPEN="|lesspipe %s"
#don't like: export LESSOPEN="| /usr/bin/src-hilite-lesspipe.sh %s"
#default:    export LESS=" -R -M --shift 5"
export LESSCOLOR=always
export LESSCOLORIZER=/usr/bin/src-hilite-lesspipe.sh

lesspipe다른 기능이 있기 때문에 교체하고 싶지 않았습니다 . 연결이 작동하지 않았습니다.


0

당신이 원하는 경우에 당신은 빔에서 사용하는 강조 동일한 구문 하지만 어떤 이유로 당신이 사용하는 것을 선호 less: 호출기로를,이 스크립트 사용할 수 있습니다 https://github.com/rkitover/vimpager을

기본 사용법은 다음과 같습니다.

vimpager file.txt

또는

vimcat file.ext | less -R

사용 -c하지 않는 추가 명령을 전달 하는 데 사용할 수 있습니다 .vimrc(예 : 다른 색 구성표 선택). 내가 사용하는 전체 명령은 다음과 같습니다.

vimcat -c 'set cmdheight=20' -c 'hi! clear Normal' -o - "$FILENAME" | less -REXS

주의 : Vim이 시작할 때 Enter를 누르라고 요청하면 프롬프트가 표시되지 않지만 Enter를 누를 때까지 아무 일도 일어나지 않습니다! cmdheight위 의 트릭은이를 완화하는 데 도움이 될 수 있습니다.


0

나는 다음을 발견했다 highlight.

  • 여러 가지 색 구성표 및 256 색 지원
  • STDIN에서 작동합니다 (달리 source-highlight)
  • 보다 빠르다 pygmentize

스크린 샷

다음은 자동으로 사용 하도록 설정하는 방법에 대한 지침 highlight-less-wrapper이 포함 된 스크립트 입니다..bashrcless

#!/bin/bash

# Have highlight read from STDIN if '-' is given as filename

# Setup - Add to .bashrc:
# LESSOPEN='|-highlight-less-wrapper "%s"'
# export LESS=-FMRXis

# Usage:
# $ less file
# OR
# $ pipeline | less

warn () { printf "%s: %s\n" "$(basename "$0")" "$*" 1>&2; }
die () { warn "$@"; exit 1; }

# Argument checking
case $# in
    0)
        # Allow `exec $0` for less setup
        echo "LESSOPEN='|-$(readlink -f "$0") "'"%s"'\'
        exit 255 ;;
    1)
        # Only one argument is expected.
        # less will invoke multiple times given multiple files.
        file=$1
        if [[ $file != - && ! -r $file ]]; then  # less passes '-' for STDIN
            die "Cannot open $file for reading"
        fi ;;
    *)
        die "Expected only one argument" ;;
esac

# Run highlight
# highlight will read from STDIN when given a null filename
run_highlight () {
    highlight --force -O truecolor --style aiseered "$1"
}

if [[ $file == - ]]; then  # Run on stdin
    run_highlight ""
else
    run_highlight "$file"
fi

"Github는 이제 Mordor Corp의 일부이므로 Git 저장소가 옮겨진 하이라이트"에 관심이 있었지만 더 이상 90 년대의 개발자가 자라야하는 것은 아닙니다.
Urda

0

나는 같은 질문을했고 나는 모든 대답을 듣고 착륙 읽고 다음 내가 마지막으로 구문 강조 내가 사용 매번 가지고 무슨 짓을 less또는 most:

sudo apt install source-highlight

그럼 난 가서 내 별칭을 생성 less하고 most(나는 zsh을 사용하지만 당신은 당신의 별칭을 추가 할 수 있습니다 .bashrc당신이 떠들썩한 파티를 사용하는 경우 파일) :

vim ~/.zshrc

( 정력에 갇혀받을 수있는 사람들을 위해 : 언론은 i당신이 눌러 완료되면, 편집 모드로 이동 Esc한 후 :다음 x마지막으로 Enter변경 사항을 저장합니다 )

그리고 데비안 기반 배포판 (Debian, Ubuntu, Mint 등)에 다음 줄을 붙여 넣습니다.

alias most='AliasFuncLess() { unset -f AliasFuncLess; $(dpkg -L libsource-highlight-common | grep lesspipe) "$1" | less -R };AliasFuncLess'
alias most='AliasFuncMost() { unset -f AliasFuncMost; $(dpkg -L libsource-highlight-common | grep lesspipe) "$1" | most };AliasFuncMost'

또는 RPM 배포판 (Redhat, Fedora, Centos)의 경우 :

alias most='AliasFuncLess() { unset -f AliasFuncLess; $(rpm -ql source-highlight | grep lesspipe) "$1" | less -R };AliasFuncLess'
alias most='AliasFuncMost() { unset -f AliasFuncMost; $(rpm -ql source-highlight | grep lesspipe) "$1" | most };AliasFuncMost'

기억 터미널을 닫고 확인 별명이 작성 될 수 있도록 다시 열 수 있습니다.

이제 색상을 즐길 수 있습니다 :

most yourFile.xml
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.