[unix] 터미널에서 구문 강조

많은 프로그래밍 지향 편집기가 소스 코드를 채색합니다. 터미널에서 볼 수 있도록 소스 코드를 채색하는 명령이 있습니까?

내가 가진 파일을 열 수 emacs -nw(대신 새 창을 팝업의 터미널에서 열립니다),하지만 난 뭔가를 찾고 있어요 그런 작품 less(또는 작품 less -R 입력 컬러 이스케이프 시퀀스를 통과).



답변

highlight같은 색 이스케이프 시퀀스를 지원하는 단말에서 xterm:

highlight -O xterm256 your-file | less -R

ruby-rouge:

rougify your-file | less -R

python-pygments:

pygmentize your-file | less -R

GNUsource-highlight :

source-highlight -f esc256 -i your-file | less -R

함께 제공되는 스크립트를 사용 vim하여 호출기로 사용할 수도 있습니다 (자세한 내용은 내부 참조).macros/less.shvim:h lessvim

내 시스템에서 :

sh /usr/share/vim/vim74/macros/less.sh your-file

또는 당신은 지원 HTML 출력과 사용 구문 형광펜을 사용할 수 elinks또는 w3m페이저 (또는 AS elinks -dump -dump-color-mode 3 | less -R와 같은) GNUsource-highlight :

source-highlight -o STDOUT -i your-file | elinks -dump -dump-color-mode 3 | less -R


답변

나는 이것을 위해 GNU를 source-highlight결합하여 less -R사용합니다. 쉘의 초기화 파일에 다음 행을 추가하십시오 ( ~/.bashrc예 :).

cless(){
 LESSOPEN='| source-highlight --failsafe --out-format=esc256 -o STDOUT -i %s 2>/dev/null ' less -R "$@"
}

사용 된 언어에 따라 소스 코드에 자동으로 색상을 지정해야하며, 그렇지 않으면 less입력시 직접 실행 됩니다.


답변

less보다 일반적으로 색상에 관심이있는 경우를 참조하십시오 lesspipe.sh. 예를 들어 http://freecode.com/projects/lesspipe 를 참조 하십시오 .

lesspipe.sh는 less의 man page에서 설명한대로 pager에 대한 입력 필터입니다. 이 스크립트는 ksh 호환 쉘 (예 : bash, zsh)에서 실행되며 바이너리 컨텐츠, 압축 파일, 아카이브 및 아카이브에 포함 된 파일이있는 파일을 적게 사용하도록합니다.

또한 텍스트 편집기와 유사하게 쉘 스크립트, 펄 스크립트 등을 채색하지만 채색을 위해 “전처리”프로그램을 사용하지 않습니다.


답변

나는 단순함을 즐기고 나노 텍스트 편집기를 사용합니다.이 경우 보통 다음과 같이 진행합니다.

마녀 구문 강조 표시 확인 가능 :
ls -la /usr/share/nano/

다음 명령을 사용하거나 수동으로 수행하여 nanorc 파일에 포함하십시오.

echo 'include /usr/share/nano/sh.nanorc' >> ~/.nanorc

에 대해 less내가 한 번 봐주고 제안 이 페이지를


답변

Stéphane Chazelas 제안 에 따르면 highlightshow Syntax highlight 를 사용 하고 .bashrc 등에 넣는 bash 함수를 만듭니다 . 훌륭하고 빠르며 효과적입니다.

s(){ highlight --force -O ansi $1 | /usr/bin/less -R; }

지원 202 언어 구문 형식을 강조 표시 합니다 . 참조하십시오 highlight --list-scripts=langs.


답변

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. 다행히도 소스에서 직접 최신 버전을 쉽게 구축 할 수 있습니다.


답변

이를 구문 강조라고합니다.

GNU 소스 는 소스 파일이 주어지면 강조 표시 되어 문서를 생성합니다.

lessfilter아래 스크립트를 사용 하거나 다음 less과 같이 자동으로 호출 할 수 있습니다.

export LESSOPEN="| /path/to/lessfilter %s"
export LESS=' -R '

기사를 찾아서 이렇게 시작했습니다.

#!/bin/sh
file -b -L "$1" | grep -q text &&
  /usr/share/source-highlight/src-hilite-lesspipe.sh "$1"

( 모든 배포판에 포함 src-hilite-lesspipe.sh되어 source-highlight있지는 않지만)