색상 코드에 따라 Vim 표시 색상을 만드는 방법은 무엇입니까?

색상 코드에 따라 Vim 표시 색상을 만드는 방법은 무엇입니까?

간단히 말해서 ( )를 대신 less사용 하려고 합니다 . 가능한 한 색상이 돋보이도록 스크립트를 설정했습니다(굵게, 모든 것이 괜찮습니다). 색상코드를 이해하고 잘 표시해 보세요. 이 방법으로 코드를 구문 분석하고 색상/굵게 표시하려면 어떻게 해야 합니까 ?vimvimpagerlessvimless

답변1

두 가지 답변:

짧은 대답: vim 스크립트를 사용하고 싶습니다AnsiEsc.vim. 파일에서 실제 ANSI 이스케이프 시퀀스를 숨기고 구문 강조를 사용하여 텍스트 색상을 적절하게 지정합니다. 호출기에서 사용할 때의 문제점은 vim이 언제 사용할지 인식하도록 해야 한다는 것입니다. 단순히 항상 로드할 수 있는지 아니면 다른 문법 파일과 충돌하는지 잘 모르겠습니다. 당신은 그것을 시도해야합니다.

긴 답변: 여러분이 바랄 수 있는 최선의 방법은 부분적으로 이식성이 없는 솔루션입니다. Less는 실제로 터미널 이스케이프 시퀀스를 이해하지 못합니다. 왜냐하면 이러한 시퀀스는 터미널에 크게 의존하기 때문입니다. 그러나 Less는 이러한 시퀀스(의 하위 집합)를 인식하고 -r(or-R ) 옵션이 사용되는 경우 해당 시퀀스를 터미널에 전달하는 것을 알게 됩니다. 터미널은 이스케이프 시퀀스를 해석하고 텍스트의 속성(색상, 굵게, 밑줄...)을 변경합니다. 호출기라기보다 편집자인 Vim은 단순히 원시 제어 문자를 터미널에 전달하지 않습니다. 실제로 편집할 수 있도록 어떤 방식으로든 표시해야 합니다. 숨기기 및 구문 강조와 같은 vim의 다른 기능을 사용하여 시퀀스를 숨기고 텍스트 색상을 지정하는 데 사용할 수 있지만 항상 터미널 시퀀스의 하위 집합만 처리하고 일부 터미널에서는 작동하지 않을 수 있습니다.

이것은 실제로 텍스트 편집기를 호출기로 사용하려고 할 때 직면하게 되는 많은 문제 중 하나일 뿐입니다.

답변2

이제 vim 8에서는 터미널 모드를 사용한 다음 :terminal해당 터미널에서 cat myfileCtrl-w N을 사용하여 일반 모드로 돌아갈 수 있습니다. 그러면 ANSI 색상 코드가 올바르게 표시됩니다. 이러한 단계를 자동화하고 파일 대신 표준 입력에서 읽어서 less 대신 vim을 사용할 수 있어야 합니다.

예를 들어 다음을 실행할 수 있습니다.ls --color=always >/tmp/colored.txt

또는unbuffer ls >/tmp/colored.txt

그런 다음 vim에서 :terminal cat /tmp/colored.txt계속하십시오 .:only

그러면 vim에서 ls 출력의 멋진 색상을 얻을 수 있습니다 less. vim은 시작 시 명령줄 인수로 명령 전달을 지원하므로 이 솔루션은 교체 작업을 덜 수행하도록 수정될 수 있습니다. :)

답변3

vim 플러그인 설치향상된 AnsiEsc .profile/bash_profile/zprofile에 다음을 입력하면 됩니다.

export PAGER="vim -R +AnsiEsc"

답변4

vim의 json 구문 강조를 사용할 수 있습니다. 일반적으로 대부분의 기본 vim 설치에서 발견됩니다. 어쩌면 마음에 들지 않을 수도 있지만 less -R...

  • Python을 사용하는 경우 사람이 읽을 수 있게 됩니다.-mjson.tool
cat filename | python -mjson.tool | vim -c 'set syntax=json' -
  • Python이 없지만 json이 아름답게 인쇄되는 경우
cat filename | vim -c 'set syntax=json' -

또한 일부 브라우저에는 브라우저에 연결할 수 있는 json 확장이 있습니다. 흠, w3m순수 CLI 작업에는 이 정도면 충분한지 궁금합니다 .

도움이 되길 바랍니다.

관련 정보