Cách đánh dấu cú pháp qua Ít


133

Có cách nào để cú pháp làm nổi bật một tập tin tôi thấy trong Ít hơn không?

thực sự tôi đang sử dụng lệnh này để mở tệp xml (và đôi khi là một loạt chúng)

less htmleditors/htmleditors_config.xml

hoặc là

less [multiple files]

Tôi muốn ở lại Ít hơn (để học chương trình đó tốt hơn và sử dụng kiến ​​thức của tôi về: n và: p cho điều hướng tiếp theo / trước đó)

Nhưng nó cũng muốn một số loại cú pháp tô sáng cơ bản - ít nhất là hiển thị các bình luận khác nhau. Bạn có biết cách nào để làm điều đó?

Câu trả lời:


123

Bạn có thể sử dụng tô sáng nguồn của GNU , như được hiển thị ở đây (đường dẫn có thể khác nhau, xem bên dưới):

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

Kể từ Debian Stretch và Fedora 25, tên gói và đường dẫn tập lệnh khác nhau

  • Debian:

    sudo apt install libsource-highlight-common source-highlight
    dpkg -L libsource-highlight-common | grep lesspipe
    # /usr/share/source-highlight/src-hilite-lesspipe.sh
    
  • Fedora:

    sudo dnf install source-highlight
    rpm -ql source-highlight | grep lesspipe
    # /usr/bin/source-highlight/src-hilite-lesspipe.sh
    

Tôi lấy thông báo lỗi sau khi tôi chạy less ~/.zshrc. Lỗi : src-hilite-lesspipe.sh: line 9: source-highlight: command not found. Tôi chạy cái này trên MacOSX.
JJD

2
@JJD Bạn đã cài đặt nguồn sáng?
Max Nanasy

13
OSX : brew install source-highlight; export LESSOPEN="| /usr/local/bin/src-hilite-lesspipe.sh %s". Lưu ý thay đổi đường dẫn.
Gregg Lind

23
Trên Debian: sudo apt-get install source-highlight, export LESSOPEN="| /usr/share/source-highlight/src-hilite-lesspipe.sh %s",export LESS=' -R '
Morgan Courbet

3
cảnh báo nhỏ: nguồn-highlight hiện không hỗ trợ đánh dấu.
dhulihan

97

Tốt nhất trong cả hai câu trả lời trước: bạn có thể gọi trình soạn thảo mặc định của hệ thống từ bên trong ít hơn, bằng cách nhấn v.


3
Ồ Điều này là rất hữu ích!
nhảy

13
Những lời nguyền đã mở Nano trên hộp Ubuntu của tôi!
jamesc

5
Sau đó, đặt $ EDITOR hoặc $ VISUAL thành vim (hoặc emacs, hoặc gedit, hoặc joe, hoặc ed, hoặc khai thác, hoặc Khắc).
Daniel H

@jamesc FYI, bạn có thể bật tính năng tô sáng cú pháp trong Nano, đây là cách thực hiện.
Thuyền trưởng Man

@CaptainMan Không phải không! Tôi thay đổi mặc định trở lại vim như Daniel H đã nói! : D
jamesc

33
pygmentize somefile.ex | less -R

hoặc là

function cless () {
    pygmentize -f terminal "$1" | less -R
}

Pyributionize là một phần của highliter cú pháp Python Pygments .


3
pygmentizecũng làm việc với những LESSOPENthứ được đề cập trong các câu trả lời khác ở đây.
Nathan

2
Để có được pygmentize, bạn cần Python và sau đó bạn có thể cài đặt pygmentizevới pip install pygments.
wkschwartz 20/03/2015

3
Để có được lesssử dụng pygmentizecho các cú pháp sử dụng nổi bật: which pygmentize 2> /dev/null >&2 && export LESSOPEN="| pygmentize -g -f terminal256 %s". -gđể làm cho nó hoạt động với ống ( less <(diff -u file1 files)). Nó có sẵn trong community/pygmentizegói cho arch linuxpython-pygmentscho debian.
x-yuri

Tôi thích đầu ra của pygmentize, nhưng thấy nó quá chậm. Tôi đã đưa ra câu trả lời này nhanh hơn và vẫn còn 256 màu.
Tom Hale

16

Tôi nghĩ rằng bạn nên sử dụng một trình soạn thảo văn bản. Tôi thích vim mình. Điều đó sẽ cung cấp cho bạn rất nhiều năng lượng khi xem các tập tin và sau đó khi bạn muốn chỉnh sửa chúng, bạn sẽ biết những điều cơ bản.

Dưới đây là một số ưu điểm của việc sử dụng trình soạn thảo văn bản (cụ thể là vim):

  • làm nổi bật cú pháp
  • lệnh chuyển động mạnh mẽ
  • tìm thấy
  • nhảy đến vị trí cụ thể trong một tệp (được gọi là dấu)
  • gấp (hữu ích khi bạn chỉ muốn xem các cuống chức năng)

Để mở tệp của bạn ở chế độ chỉ đọc, hãy sử dụng:

vim -R <file name>

Dưới đây là hướng dẫn điều hướng cơ bản:

j - move down one line
k - move up one line
h - left one char
l -right one char

ctrl-f - forward one page
ctrl-b - back one page

/<something> - search for something
n - next of whatever you searched for
N - next (search backwards) of whatever you searched for

:q - quit
:q! - quit without saving
:w - save

Đây là một liên kết để biết thêm thông tin:

http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html

Chỉ cần tóm tắt lại, nếu bạn sẽ sử dụng unix vim là khá cơ bản. Tôi đã nghe nói rằng học vim cũng giống như học đánh máy. Nó là công cụ hữu ích tiếp theo bạn có thể học lập trình.

(Chỉ để tránh các cuộc chiến biên tập, bạn cũng có thể xem xét các emacs hoặc một trình soạn thảo khác, tuy nhiên cá nhân tôi thích vim hơn)


1
Tôi thứ hai này. Vim khởi chạy nhanh nhất có thể và nhiều phím tắt (ví dụ: tìm kiếm, trang tiếp theo, trang trước) giống hệt nhau.
Jeremy W. Sherman

10
Chỉ cần FYI, trên rất nhiều hệ thống, viewlà một bí danh cho vim -R.
Andrew Ferrier

15

Như những người khác đã nói, bạn có thể sử dụng sức mạnh của vim. Nhưng quan trọng, bạn có thể làm như vậy mà không cần học cách sử dụng vi / vim.

Vim đi kèm với một less.vimkịch bản hoạt động khá tốt thay thế ít hơn, với tô sáng cú pháp đầy đủ màu sắc. Nó sử dụng lesskeybindings (chỉ cần nhấn 'q' để thoát).

Nó có một vài vấn đề, vì vậy tôi đã cải thiện nó . Đây là một ảnh chụp màn hình từ bài đăng trên blog của tôi trên đó (được lưu trữ 2013-04-09; ném ban đầu 503):

ảnh chụp màn hình của https://github.com/huyz/less.vim


2
Tuyệt vời! Nhưng như tôi không thể tìm thấy kịch bản ngay lập tức tôi muốn chia sẻ các lệnh để định vị nó: find /usr/share/vim -name 'less.sh'được lấy từ ý chính sau: gist.github.com/chauncey-garrett/9773770
Nuala

Thêm vào nhận xét của @ yoshi, để nhanh chóng thêm một vimlesslệnh (theo danh pháp của vimdiff), hãy làm:ln -s $(find /usr/share/vim -name 'less.sh') /usr/local/bin/vimless
waldyrious

Liên kết là 404!
acgtyrant

@acgtyrant Nên sửa ngay; Lưu trữ Internet rất may có nó.
bb010g

10

Tôi cũng đang tìm kiếm điều này và tìm thấy một giải pháp khác bằng cách sử dụng Vim: http://ubfox-tutorials.com/2008/07/14/use-vim-as-a-syntax-highlighting-pager/

Bài đăng khá cũ, vì vậy bây giờ trên các bản phát hành gần đây vim 7.2 đã được chuyển đi và .bashrc sẽ đọc: alias vless = 'vim -u /usr/share/vim/vim72/macros/less.vim'


1
MacVim đi kèm với tập lệnh shell mà bạn có thể sử dụng trực tiếp, nằm trong: /Appluggest/MacVim.app/Contents/Resource/vim/r nb/macros/less.sh
Nick

1
Tính năng này được ghi lại trong chính Vim dưới:help less
joeytwiddle

8

Tôi vui mừng thông báo một gói mới, e2ansi , cung cấp hỗ trợ đánh dấu 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, giao diệ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.


Đối với OS X, tôi khuyên bạn nên sử dụng trình quản lý gói brew [ brew.sh/] với dupes brew [ github.com/Homebrew/homebrew-dupes] để cài đặt các phiên bản cập nhật của những thứ như less.
drevicko

"được cung cấp bởi emacs" - chạy toàn bộ VM chỉ để xem một tệp? ;-) và +1
Alois Mahdal

6

Nếu bạn đã cài đặt GNU Source-highlight, bạn có thể sử dụng lệnh sau để tô sáng cú pháp của một tệp:

$ src-hilite-lesspipe.sh yourfile.xml | less -R

Có thể src-hilite-lesspipe.shnhận đầu vào thông qua một đường ống là tốt?
waldyrious

2

source-highlightcó một .shkịch bản nằm ở /usr/share/source-highlight/*.sh. Tôi đã tạo một liên kết tượng trưng cho nó với tên hcattrong /usr/bin.

Nó hiển thị đầu ra được tô sáng trong terminal (console) - hcatđược tô sáng con mèo.

Làm thế nào để:

[me@this]<bash><~> 43 
21:23 Fri Apr 19 > sudo apt-get install source-highlight

[me@this]<bash><~> 28 
21:03 Fri Apr 19 > ll /usr/share/source-highlight/*.sh
-rwxr-xr-x 1 root root 432 May  1  2012 /usr/share/source-highlight/src-hilite-lesspipe.sh*

[me@this]<bash><~> 29 
21:04 Fri Apr 19 > sudo su
root@this:/home/me# cd /usr/bin/
root@this:/usr/bin# ln -s /usr/share/source-highlight/src-hilite-lesspipe.sh hcat

[me@this]<bash><~> 36 
21:07 Fri Apr 19 > hcat test.xml

2

Sử dụng OS X 10.9 (Maverick) điều này sẽ thực hiện thủ thuật:

  • brew install source-highlight (Giả sử brew được cài đặt - http://brew.sh )
  • sudo nano /etc/launchd.conf

    setenv LESSOPEN="| /usr/local/bin/src-hilite-lesspipe.sh %s"     
    setenv LESS=' -R '
    

    (Thêm vào /etc/launchd.conf)

  • khởi động lại


0

Trong mac, bạn chỉ có thể gõ view filename, làm điều tương tự như ít hơn.


1
Với OSX, view filenamechỉ cần khởi chạy vimtheo mặc định - các ràng buộc phím hơi khác với less(xem các câu trả lời khác cho câu hỏi này để biết thêm chi tiết).
drevicko

0

Sau khi cài đặt nguồn sáng của GNU (gói dev-util/source-highlighttrên sabayon / gentoo), tôi đã cấu hình các envs đó trong /etc/bash/bashrc.d/my-less-src-highlight:

#default:    export LESSOPEN="|lesspipe %s"
#don't like: export LESSOPEN="| /usr/bin/src-hilite-lesspipe.sh %s"
#default:    export LESS=" -R -M --shift 5"
export LESSCOLOR=always
export LESSCOLORIZER=/usr/bin/src-hilite-lesspipe.sh

Tôi không thích thay thế lesspipebởi vì nó có các tính năng khác. Sự kết hợp đã không làm việc.


0

Nếu bạn muốn cùng một cú pháp tô sáng bạn sử dụng trong Vim , nhưng vì một số lý do bạn thích sử dụng lesslàm máy nhắn tin của mình, bạn có thể sử dụng tập lệnh này: https://github.com/rkitover/vimpager

Cách sử dụng cơ bản sẽ là:

vimpager file.txt

hoặc là

vimcat file.ext | less -R

Bạn có thể sử dụng -cđể truyền các lệnh bổ sung không có trong .vimrc(ví dụ: chọn một bảng màu khác). Lệnh đầy đủ tôi sử dụng là:

vimcat -c 'set cmdheight=20' -c 'hi! clear Normal' -o - "$FILENAME" | less -REXS

Cẩn thận: Nếu Vim của bạn yêu cầu bạn nhấn Enter khi nó khởi động, bạn sẽ không thấy lời nhắc, nhưng sẽ không có gì xảy ra cho đến khi bạn nhấn Enter! Thủ cmdheightthuật trên có thể giúp giảm thiểu điều đó.


0

Tôi tìm thấy highlight:

  • Hỗ trợ nhiều bảng màu và 256 màu
  • Hoạt động trên STDIN (không giống như source-highlight)
  • Nhanh hơn nhiều pygmentize

Ảnh chụp màn hình

Đây là một đoạn script tôi gọi highlight-less-wrapperbao gồm các .bashrchướng dẫn về cách thiết lập lessđể sử dụng nó một cách tự động.

#!/bin/bash

# Have highlight read from STDIN if '-' is given as filename

# Setup - Add to .bashrc:
# LESSOPEN='|-highlight-less-wrapper "%s"'
# export LESS=-FMRXis

# Usage:
# $ less file
# OR
# $ pipeline | less

warn () { printf "%s: %s\n" "$(basename "$0")" "$*" 1>&2; }
die () { warn "$@"; exit 1; }

# Argument checking
case $# in
    0)
        # Allow `exec $0` for less setup
        echo "LESSOPEN='|-$(readlink -f "$0") "'"%s"'\'
        exit 255 ;;
    1)
        # Only one argument is expected.
        # less will invoke multiple times given multiple files.
        file=$1
        if [[ $file != - && ! -r $file ]]; then  # less passes '-' for STDIN
            die "Cannot open $file for reading"
        fi ;;
    *)
        die "Expected only one argument" ;;
esac

# Run highlight
# highlight will read from STDIN when given a null filename
run_highlight () {
    highlight --force -O truecolor --style aiseered "$1"
}

if [[ $file == - ]]; then  # Run on stdin
    run_highlight ""
else
    run_highlight "$file"
fi

"Vì Github hiện là một phần của Mordor Corp, điểm nổi bật của Git repo" Đã được quan tâm, nhưng cmon không phải là nhà phát triển của thập niên 90 nữa cần phải lớn lên.
Urda

0

Tôi đã có cùng một câu hỏi và tôi đã nghe, đọc tất cả các câu trả lời và sau đây là những gì cuối cùng tôi đã làm để có cú pháp tô sáng mỗi khi tôi sử dụng lesshoặc most:

sudo apt install source-highlight

Sau đó, tôi đã đi và tạo một bí danh cho tôi lessmost(Tôi sử dụng ZSH, nhưng bạn có thể thêm bí danh cho .bashrctệp của mình nếu bạn sử dụng bash):

vim ~/.zshrc

( Đối với những người có thể bị kẹt trong vim: nhấn iđể chuyển sang chế độ chỉnh sửa, khi bạn hoàn thành nhấn Escrồi :sau đó xvà cuối cùng Enterđể lưu các thay đổi )

Và dán các dòng sau cho các bản phát hành dựa trên debian (như Debian, Ubuntu, Mint, v.v.):

alias most='AliasFuncLess() { unset -f AliasFuncLess; $(dpkg -L libsource-highlight-common | grep lesspipe) "$1" | less -R };AliasFuncLess'
alias most='AliasFuncMost() { unset -f AliasFuncMost; $(dpkg -L libsource-highlight-common | grep lesspipe) "$1" | most };AliasFuncMost'

hoặc cho các bản phân phối RPM (Redhat, Fedora, Centos):

alias most='AliasFuncLess() { unset -f AliasFuncLess; $(rpm -ql source-highlight | grep lesspipe) "$1" | less -R };AliasFuncLess'
alias most='AliasFuncMost() { unset -f AliasFuncMost; $(rpm -ql source-highlight | grep lesspipe) "$1" | most };AliasFuncMost'

Nhớ đóng terminal và mở lại để đảm bảo bí danh được tạo.

Bây giờ bạn có thể thưởng thức màu sắc:

most yourFile.xml
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.