題 如何通過Less語法高亮顯示


有沒有辦法語法突出顯示我在Less中看到的文件?

實際上我正在使用此命令打開一個xml文件(有時是一系列文件)

less htmleditors/htmleditors_config.xml

要么

less [multiple files]

我想留在Less(更好地學習該程序並使用我的知識:n和:p用於下一個/上一個導航)

但它也需要某種基本語法突出顯示 - 至少以不同方式顯示註釋。你知道怎麼辦?


123
2017-11-17 10:20


起源




答案:


您可以使用 GNU的源代碼亮點, 如圖所示 這裡

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

從Debian Stretch和Fedora 25開始,包名和腳本路徑不同。 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

113
2017-11-17 10:35



我運行時檢索以下錯誤消息 less ~/.zshrc。錯誤: src-hilite-lesspipe.sh: line 9: source-highlight: command not found。我在MacOSX上運行它。 - JJD
@JJD您是否安裝了source-highlight? - Max Nanasy
OSX: brew install source-highlight; export LESSOPEN="| /usr/local/bin/src-hilite-lesspipe.sh %s"。請注意路徑更改。 - Gregg Lind
關於Debian: sudo apt-get install source-highlight, export LESSOPEN="| /usr/share/source-highlight/src-hilite-lesspipe.sh %s", export LESS=' -R ' - Morgan Courbet
小警告:source-highlight目前不支持markdown。 - dhulihan


以前的答案中最好的一個:你可以通過按下來從更少的內部調用系統默認編輯器 v


85
2017-08-24 17:14



哇!這非常有用! - dancek
在我的Ubuntu盒子上打開Nano的詛咒! - jamesc
然後將$ EDITOR或$ VISUAL設置為vim(或emacs,或gedit,或joe,或ed,或mined,或......)。 - Daniel H
@jamesc FYI,你可以在Nano中啟用語法高亮, 這裡 是如何。 - Captain Man
@CaptainMan Nope nope nope!我將默認值更改為vim,就像Daniel H所說的那樣! :d - jamesc


pygmentize somefile.ex | less -R

要么

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

Pygmentize是其中的一部分 Pygments Python語法highliter


31
2017-08-24 18:25



pygmentize 也適用於 LESSOPEN 其他答案中提到的東西。 - Nathan
要得到 pygmentize,你需要Python,然後你可以安裝 pygmentize 同 pip install pygments。 - wkschwartz
要得到 less 使用 pygmentize 用於語法高亮使用: which pygmentize 2> /dev/null >&2 && export LESSOPEN="| pygmentize -g -f terminal256 %s"。 -g 使它與管道一起工作(less <(diff -u file1 files))。它可用於 community/pygmentize 包裹 arch linux,並在 python-pygments 對於 debian。 - x-yuri
我喜歡輸出 pygmentize,但發現它太慢了。我想出來了 這個答案 這是更快,仍然是256色漂亮。 - Tom Hale


我認為你應該使用文本編輯器。我自己喜歡vim。在查看文件時,這將為您提供很多功能,然後當您想要編輯它們時,您將已經了解基礎知識。

以下是使用文本編輯器(特別是vim)的一些優點:

  • 語法高亮
  • 強大的運動命令
  • 跳轉到文件中的特定位置(稱為標記)
  • 折疊(當你只想看功能存根時很有用)

要以只讀模式打開文件,請使用以下命令:

vim -R <file name>

這是一個基本的導航指南:

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

這是一個鏈接以獲取更多信息:

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

回顧一下,如果你使用unix vim是非常基礎的。我聽說學習vim就像學習打字。它是您可以學習編程的下一個最有用的工具。

(為了避免編輯大戰,你也可以查看emacs或其他編輯器,但是我 親身 喜歡vim)


15
2018-03-01 22:18



我是第二個。 Vim以盡可能快的速度發布,並且許多鍵盤快捷鍵(例如,搜索,下一頁,上一頁)是相同的。 - Jeremy W. Sherman
僅供參考,在許多系統上, view 是別名 vim -R。 - Andrew Ferrier


正如其他人所說,你可以使用vim的力量。但重要的是,你可以這樣做,而無需學習如何使用vi / vim。

Vim附帶一個 less.vim 該腳本非常適合作為less的替代品,具有全彩色語法高亮顯示。它用 less 鍵綁定(只需點擊'q'即可退出)。

它有一些問題,所以我改進了它。我有截圖 http://huyz.us/2011/a-less-like-pager-with-color-syntax-highlighting/


13
2017-07-04 05:35



真棒!但由於我無法立即找到該腳本,我想分享查找它的命令: find /usr/share/vim -name 'less.sh' 這取自這個要點: gist.github.com/chauncey-garrett/9773770 - yoshi
添加@yoshi的評論,快速添加一個 vimless 命令(遵循命名法) vimdiff),做: ln -s $(find /usr/share/vim -name 'less.sh') /usr/local/bin/vimless - waldyrious
鏈接是404! - acgtyrant


我也在尋找這個,並找到了使用Vim的另一個解決方案: http://ubuntu-tutorials.com/2008/07/14/use-vim-as-a-syntax-highlighting-pager/

該帖子相當陳舊,所以現在在更新的發行版vim 7.2發布,.bashrc將讀取: alias vless ='vim -u /usr/share/vim/vim72/macros/less.vim'


9
2018-02-10 13:43



MacVim附帶了一個可以直接使用的shell腳本,位於:/Applications/MacVim.app/Contents/Resources/vim/runtime/macros/less.sh - Nick
此功能記錄在Vim本身下 :help less - joeytwiddle


我很高興宣布一個新包裝, e2ansi,那提供 語法高亮支持尋呼機,如 more 和 less

該軟件包使用所有文本編輯的母親, Emacs的, 至 執行實際的語法高亮。所有其他的額外獎勵 通常由Emacs執行的轉換 - 例如解壓縮文件 - 也進行了。

以下是使用查看文件的結果 less 和 e2ansi

Example

組態

該軟件包提供了一個命令行工具 e2ansi-cat 開始了 批處理模式下的Emacs,打開文件,語法突出顯示它們和渲染 使用ANSI序列的結果。

您可以將其集成到 less 通過設置以下變量 例如,(您的init文件的位置可能會有所不同):

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

在上面的配置中, less 恢復原始終端 窗口內容,而 more 只需在輸出後輸出新內容 提示。

注意:如果您使用舊版本 less,它可能不支持 || 或者 - 語法,在這種情況下,您可能需要簡單地使用 LESSOPEN=|/usr/local/emacs ...

運用 less 在管道中

中的“ - ”字符 LESSOPEN 表示輸入過濾器應該 管道文本時也可以使用 less。在這種情況下,Emacs可以 只依賴文本本身(而不是文件名)。幸運的是,Emacs 為此提供了一個系統。另外,提供的文件文件 e2ansi-magic.el 設置其他文件類型。例如:

Pipe example

為什麼要使用Emacs?

  • Emacs幾乎支持所有編程語言和 結構化文本格式。在大多數情況下,語法突出顯示 支持非常好。
  • 您可以輕鬆添加對更多語言和格式的支持,或進行修改 現有的包裝,以滿足您的需求。
  • Emacs支持顏色主題。使用時 e2ansi,顏色 查看文件時保留主題 less。你可以選擇一個 從許多來源適當的顏色主題,或設計自己的。
  • 如果您使用Emacs作為您的首選編輯器,您將獲得相同的選擇 在使用時查看文件時在編輯器中突出顯示 less (減去ANSI序列格式和終端的限制 窗口)。
  • less 將利用自動執行的Emacs功能 轉換,例如解壓縮文件。事實上,你可以教 Emacs可以執行任何類型的轉換,例如自動轉換 使用外部工具將二進製文件轉換為人類可讀的形式
  • 您可以使用Emacs的語法查看位於其他計算機上的文件 用於遠程訪問 /USER@HOST:FILENAME

有用的鏈接

  • e2ansi 分發 Melpa 並且可以使用安裝 標準的Emacs包系統
  • e2ansi 託管在 GitHub上
  • e2ansi 頁面上 Emacs Wiki
  • 的家 less

操作系統說明

  • 在MS Windows上,控制臺本身不支持ANSI序列。 幸運的是 less 應用程序能夠呈現它們。一世 我不知道任何當代的二元分佈 less 對於 MS Windows和提供的構建文件很難使用。幸好, 它很容易構建 less 運用 CMake的,見 本文 對於 細節。

  • OS X分發了一個古老的版本 less。幸運的是,它是 易於直接從源代碼構建現代版本。


7
2018-02-04 19:10



對於OS X,我建議使用包管理器 釀造 [brew.sh/] 同 釀造欺騙 [github.com/Homebrew/homebrew-dupes] 安裝最新版本的東西 less。 - drevicko
“由emacs提供支持” - 運行整個VM只是為了查看文件? ;-)和+1 - Alois Mahdal


如果你有 GNU Source-highlight 安裝後,您可以使用以下命令突出顯示單個文件的語法:

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

6
2018-04-07 07:52



能夠 src-hilite-lesspipe.sh 通過管道接收輸入? - waldyrious