Cú pháp tô sáng trong terminal


43

Rất nhiều trình soạn thảo định hướng lập trình sẽ tô màu mã nguồn. Có một lệnh sẽ tô màu mã nguồn để xem trong thiết bị đầu cuối?

Tôi có thể mở một tệp với emacs -nw(mở trong thiết bị đầu cuối thay vì bật lên một cửa sổ mới), nhưng tôi đang tìm kiếm một cái gì đó hoạt động như less(hoặc hoạt động với less -R , đi qua các chuỗi thoát màu trong đầu vào của nó).

Câu trả lời:


66

Với highlightmột thiết bị đầu cuối hỗ trợ các chuỗi thoát màu giống như xterm:

highlight -O xterm256 your-file | less -R

Với ruby-rouge:

rougify your-file | less -R

Với python-pygments:

pygmentize your-file | less -R

Với GNUsource-highlight :

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

Bạn cũng có thể sử dụng vimlàm máy nhắn tin với sự trợ giúp của macros/less.shtập lệnh được gửi kèm vim(xem :h lessbên trong vimđể biết chi tiết):

Trên hệ thống của tôi:

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

Hoặc bạn có thể sử dụng bất kỳ công cụ tô sáng cú pháp nào hỗ trợ đầu ra và sử dụng HTML elinkshoặc w3mlàm máy nhắn tin (hoặc elinks -dump -dump-color-mode 3 | less -R) như với GNUsource-highlight :

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

Nổi bật có thể chuyển đổi văn bản thành SVG / HTML, điều này rất thú vị.
eexpress không tưởng

14

Tôi sử dụng GNU source-highlightkết hợp với less -Rđiều này. Thêm các dòng sau vào tệp khởi tạo shell của bạn ( ~/.bashrcví dụ):

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

Điều đó sẽ tự động tô màu mã nguồn theo ngôn ngữ được sử dụng và nếu không thể, nó sẽ khởi chạy lesstrực tiếp trên đầu vào của nó.


6

Nếu bạn quan tâm đến màu sắc lessnói chung hơn, bạn có thể muốn xem xét lesspipe.sh. Xem, ví dụ: http://freecode.com/projects/lesspipe .

lesspipe.sh là một bộ lọc đầu vào cho máy nhắn tin ít hơn như được mô tả trong trang man ít hơn. Kịch bản chạy dưới lớp vỏ tương thích ksh (ví dụ bash, zsh) và cho phép bạn sử dụng ít hơn để xem các tệp có nội dung nhị phân, tệp nén, lưu trữ và tệp có trong kho lưu trữ.

Nó cũng sẽ tô màu các tập lệnh shell, tập lệnh perl, v.v. tương tự như trình soạn thảo văn bản, nhưng không sử dụng bất kỳ chương trình "tiền xử lý" nào để thực hiện tô màu.


Cảm ơn! Tôi nghĩ đó lesspipe.shlà những gì tôi đã cố nhớ trước khi tôi đăng câu hỏi ...
alexis

2

Tôi thích sự đơn giản và tôi sử dụng trình soạn thảo văn bản nano, trong trường hợp này tôi thường tiến hành như sau:

kiểm tra đánh dấu cú pháp phù hợp có sẵn: ls -la /usr/share/nano/

bao gồm nó trong tệp nanorc của tôi với lệnh sau hoặc bằng cách thực hiện thủ công

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

về lesstôi đề nghị cho một cái nhìn vào trang này


0

Theo đề xuất của Stéphane Chazelas , tôi tạo một hàm bash để sử dụng highlightchương trình tô sáng Syntax, đặt nó vào .bashrc, v.v. Nó hoạt động tuyệt vời, nhanh chóng và hiệu quả.

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

nổi bật hỗ trợ định dạng cú pháp 202 ngôn ngữ . thấy highlight --list-scripts=langs.


0

Bạn có thể sử dụng gói, e2ansi , cung cấp hỗ trợ tô sáng cú pháp cho máy nhắn tin như moreless.

Gói sử dụng mẹ của tất cả các trình soạn thảo văn bản, Emacs , để thực hiện tô sáng cú pháp thực tế. Là một phần thưởng bổ sung, tất cả các chuyển đổi khác thường được thực hiện bởi Emacs - như các tệp không nén - cũng được thực hiện.

Thí dụ

Sau đây là kết quả của việc xem tệp bằng lesse2ansi:

Thí dụ

Cấu hình

Gói cung cấp một công cụ dòng lệnh e2ansi-catkhởi động Emacs ở chế độ hàng loạt, mở tệp, cú pháp tô sáng chúng và hiển thị kết quả bằng các chuỗi ANSI.

Bạn có thể tích hợp điều này vào lessbằng cách đặt các biến sau đây, ví dụ (vị trí của tệp init của bạn có thể thay đổi):

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

Trong cấu hình ở trên, lesskhôi phục nội dung cửa sổ đầu cuối ban đầu trong khi morechỉ cần xuất nội dung mới sau dấu nhắc.

Lưu ý: Nếu bạn sử dụng phiên bản cũ less, nó có thể không hỗ trợ cú pháp ||hoặc -cú pháp, trong trường hợp đó bạn có thể cần sử dụng đơn giản LESSOPEN=|/usr/local/emacs ....

Sử dụng lesstrong đường ống

Ký tự "-" LESSOPENchỉ ra rằng bộ lọc đầu vào cũng nên được sử dụng khi chuyển văn bản vào less. Trong trường hợp này, Emacs chỉ có thể dựa vào chính văn bản (chứ không phải tên tệp). May mắn thay, Emacs cung cấp một hệ thống cho việc này. Ngoài ra, tệp tệp được cung cấp e2ansi-magic.elsẽ thiết lập các loại tệp bổ sung. Ví dụ:

Ví dụ ống

Tại sao nên sử dụng Emacs?

  • Emacs đã hỗ trợ hầu như tất cả các ngôn ngữ lập trình và các định dạng văn bản có cấu trúc. Trong hầu hết các trường hợp, hỗ trợ tô sáng cú pháp là tuyệt vời.
  • Bạn có thể dễ dàng thêm hỗ trợ cho nhiều ngôn ngữ và định dạng hơn hoặc sửa đổi các gói hiện có cho phù hợp với nhu cầu của bạn.
  • Emacs hỗ trợ chủ đề màu sắc. Khi sử dụng e2ansi, màu sắc trong chủ đề được giữ nguyên khi xem tệp less. Bạn có thể chọn một chủ đề màu phù hợp từ một số nguồn, hoặc thiết kế của riêng bạn.
  • Nếu bạn sử dụng Emacs làm trình soạn thảo bạn chọn, bạn sẽ nhận được phần tô sáng tương tự trong trình chỉnh sửa khi bạn xem tệp bằng cách sử dụng less(trừ các giới hạn ở định dạng chuỗi ANSI và cửa sổ đầu cuối).
  • lesssẽ tận dụng các tính năng của Emacs thực hiện chuyển đổi tự động, ví dụ như giải nén các tệp. Trên thực tế, bạn có thể dạy Emacs thực hiện bất kỳ loại chuyển đổi nào như tự động chuyển đổi tệp nhị phân thành dạng có thể đọc được bằng con người bằng cách sử dụng một công cụ bên ngoài.
  • Bạn có thể xem các tệp nằm trên các máy khác bằng cách sử dụng cú pháp của Emacs để truy cập từ xa như thế nào /USER@HOST:FILENAME.

Liên kết hữu ích

  • e2ansiđược phân phối trên Melpa và có thể được cài đặt bằng hệ thống gói Emacs tiêu chuẩn
  • e2ansiđược lưu trữ trên GitHub
  • Các e2ansitrang trên Emacs Wiki
  • Nhà của less.

Ghi chú hệ điều hành

  • Trên MS Windows, bàn điều khiển không hỗ trợ các chuỗi ANSI. May mắn thay, lessứng dụng có khả năng hiển thị chúng. Tôi không biết về bất kỳ phân phối nhị phân hiện đại nào lesscho MS Windows và các tệp xây dựng được cung cấp rất khó sử dụng. May mắn thay, thật dễ dàng để xây dựng lessbằng CMake , xem văn bản này để biết chi tiết.

  • OS X phân phối một phiên bản cổ xưa của less. May mắn thay, thật dễ dàng để xây dựng một phiên bản hiện đại trực tiếp từ nguồn.


-2

Nó được gọi là tô sáng cú pháp.

GNU Source-highlight khi được cung cấp một tệp nguồn, tạo ra một tài liệu có tô sáng cú pháp.

Tôi sử dụng lessfiltertập lệnh bên dưới hoặc bạn có thể thực hiện việc lessgọi nó tự động như sau:

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

Tôi tìm thấy bài viết này và bắt đầu thực hiện theo cách này:

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

( src-hilite-lesspipe.shđược vận chuyển cùng source-highlightnhưng không phải tất cả các bản phân phối bao gồm nó)


4
"Nếu bạn đi đến bài viết, tác giả phải sử dụng máy Mac vì anh ta sử dụng chữ viết hoa cho các lệnh của mình": Tôi sợ bạn hơi bối rối: Rõ ràng bạn không biết rằng exportđịnh nghĩa một biến môi trường, không phải bí danh. Các lệnh less sử dụng cờ từ biến môi trường LESS, vì vậy câu trả lời của bạn cần một số công việc.
alexis
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.