Làm cách nào để hiển thị tô sáng cú pháp trên một tệp?


42

Có một biến thể của các catdòng mã được đánh dấu cú pháp đầu ra khi được sử dụng trên một tệp nguồn không?

Một ý tưởng: có thể vi[m]hoặc một trình soạn thảo khác có thể được yêu cầu chuyển nội dung được tô sáng theo cú pháp của các tệp đã nói sang stdoutvà thoát ngay lập tức?

Câu trả lời:


48

Truyền tệp qua sẽ cố gắng phát hiện loại từ tên tệp và tô sáng nó một cách thích hợp.pygmentize-f terminal


Đó có phải là phông chữ Star Trek: Deep Space Nine trong logo của họ không? Nếu đó là tuyệt vời.
amphetamachine

2
Có sẵn dưới dạng gói python-pygmentstrên Debian.
enzotib

6
Tôi thấy đó alias pcat="pygmentize -f terminal256 -O style=native -g"là một giải pháp tốt
Mikael hman

1
cũng có sẵn thông quapip install pygments
craigb

1
Thật ra nó phải như vậy cat code.extension | pygmentize -f terminal -l extension.
fiatjaf

13

Gói Source-highlight được cung cấp với định nghĩa ngôn ngữ đầu ra esc.outlang, nổi bật với các chuỗi thoát ANSI.

Một gói bao bọc tiện dụng src-hilite-lesspipe.shcũng được bao gồm trong gói, vì vậy hiển thị đầu ra được tô sáng trong thiết bị đầu cuối là chính src-hilite-lesspipe.sh source.file.

Trên thực tế src-hilite-lesspipe.sh, lý do chính là để giúp tự động hóa việc sử dụng source-highlightvới less. Bạn chỉ cần đặt:

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

Sau đó, bất kỳ less source.filesẽ hiển thị mã nguồn được tô sáng. (Mã trong ngôn ngữ không xác định sẽ chuyển qua không thay đổi. Đánh dấu cũng sẽ bị bỏ qua trong trường hợp nội dung được chuyển hướng, như less < source.file.)


Rất vui, cảm ơn bạn đã dành thời gian để viết lên câu trả lời này
Paolo

3

Làm nổi bật là đơn giản để sử dụng và nhanh hơnpygmentize


2
Chỉ cần đừng quên sử dụng -O ansi: không giống như pygmentize, highlightxuất ra HTML theo mặc định.
Ruslan

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.