Vim은 파일을 터미널에 인쇄하고 종료합니다.

Vim은 파일을 터미널에 인쇄하고 종료합니다.

vim에서 구문 강조를 설정할 수 있도록(또는 추가 도구가 필요하지 않도록) vim에서 이 작업을 수행하기를 원합니다. 따라서 사용하려면 를 cat file | <some_sh_tool>사용합니다 vim +"some_opts" +"..." +q file. 문제는 vim이 종료 시 이전 화면을 복원하지만 발생하지 않는 일부 원격 액세스 도구를 사용하므로 기본적으로 구문 강조 기능이 있는 cat처럼 작동한다는 것입니다.

그렇다면 이것이 가능합니까?

편집하다

더 생각해보면 참 대단한 일이라는 생각이 듭니다. 구문 강조 외에도 줄 번호, 공백, 개행 등과 같은 파일 내용을 표시할 때 vim의 다른 기능을 사용할 수 있습니다. 특히 스크립트에서는 vim이 어디에나 있기 때문에 더욱 그렇습니다.

답변1

이 터미널에 대한 대체 화면을 활성화하는 코드를 빈 문자열로 지정하여 대체 화면을 비활성화할 수 있습니다. 예:

vim --cmd 'set t_ti= t_te=' ...

하지만 더 많은 것이 필요하다는 것을 알게 될 것입니다. 노력하다:

vim --cmd 'set t_ti= t_te=' +redraw +q file

시작으로.

답변2

나는 다음과 같은 패키지에서 필요한 것을 찾았습니다.윔포그.

vimcat 유틸리티와 함께 ​​제공됩니다.

답변3

한 번 살펴보고 싶을 수도 있습니다enscript- 여러 언어에 대한 구문 강조 스타일이 있고 필터로 사용하도록 설계되었으며 출력은 ANSI 이스케이프 형식 시퀀스로 제한되지 않습니다. PostScript, HTML 또는 RTF도 출력할 수 있습니다.

답변4

나에게 맞는 것을 찾았습니다.

모든 vim 설정을 사용하여 "file.py" 파일의 내용을 STDOUT으로 인쇄하고 싶다고 가정해 보겠습니다. 나는 다음과 같이 쓸 수 있습니다 :

vim --not-a-term -T ansi +silent\ %print +redraw +quit file.py

짧지는 않지만 효과적입니다. "less"를 통해 파이프하려면 다음 과 함께 -R스위치를 사용하는 것이 좋습니다 less.

vim --not-a-term -T ansi +silent\ %print +redraw +quit file.py | less -R

(텍스트의 간격이 이상하면 터미널 크기를 조정해야 할 수도 있습니다.)

추가 설정/명령을 추가하려면 -T ansi+silent\ %print매개변수 사이에 추가하세요. 예를 들어 를 실행하려면 :set list다음과 같이 하십시오.

vim --not-a-term -T ansi +set\ list +silent\ %print +redraw +quit file.py

또는:

vim --not-a-term -T ansi "+set list" +silent\ %print +redraw +quit file.py

("set list"에는 공백이 포함되어 있으므로 공백을 이스케이프 처리하거나 "+set list" 명령을 따옴표로 묶어야 합니다.)

관련 정보