2011-03-15 232 views
7

現在,我使用most作爲我的尋呼機。雖然它對man頁面有幫助的語法突出顯示,但對於其他任何內容(我特別尋找diff/C++),它缺少彩色語法突出顯示。語法高亮尋呼機

同時,pygments是一個很棒的節目。我可以很容易地使彩色輸出它:

# ./pygmentize -f console256 ${file} 
hg diff | ./pygmentize -f console256 -l diff 

現在,我希望能夠頁的輸出,所以我只是用:

# ./pygmentize -f console256 ${file} | most 
hg diff | ./pygmentize -f console256 -l diff | most 

在這一點上,大多數轉儲全部彩色化控制字符到我的屏幕像這樣:

^[[38;5;28;01mclass^[[39;00m ^[[38;5;21;01mheap_allocator^[[39;00m 
{ 
^[[38;5;28;01mpublic^[[39;00m^[[38;5;241m:^[[39m 

這當然是不可讀的。我查看man頁面most,但我找不到任何「嘿,將這些控制字符顯示爲顏色而不是打印它們」的選項。 lessmost具有相同的垃圾行爲,但more顯示的顏色完美無瑕,具有more的明顯限制。

是否有支持語法突出顯示或某些瘋狂的參數和程序組合的尋呼機我可以串起來使這項工作?最終,我想從Mercurial獲得差異和日誌以突出顯示,所以也許有一個快捷方式在那裏...

回答

7

less -R顯示ANSI顏色序列原樣(而不是擴展爲插入符號)。這將使語法突出顯示工作!

您也可以創建環境變量LESS=-R以使其成爲默認行爲。對於其他選項也是如此見man less

2

您可能會嘗試使用jed。是的,它是一個文本編輯器,不是傳呼機,但它非常輕便,默認安裝包含各種文件類型和語言的優秀colorschemes。

+1

尼斯 - JED支持管道到緩衝區(vim和emacs的定期不)。如何打開jed中的語法高亮顯示?如果我'$ $ {FILE}',突出顯示的作品,但不是當我cat $ {文件} | jed' – 2011-03-15 18:49:53

+0

我不認爲這是可能的。這實際上是一個非常困難的問題,因爲它提出了很多語言在語法上有效的短程序非常簡單。與大多數編輯人員一樣,模式檢測僅基於文件擴展名。最簡單的方法可能是將stdout用適當的擴展名輸入到文件中。 – 2011-03-15 18:55:55

+0

一旦程序已經啓動,打開語法高亮的命令序列是什麼?我不熟悉emacs衍生產品。 – 2011-03-15 19:01:33

1

Jed具有不同語言的語法高亮模式,與emacs類似。例如,如果您將一個C程序傳送給它,您可以通過按'ESC',然後'x'打開突出顯示,然後鍵入'c-mode'。如果它是一個php程序 - 將最後一部分更改爲'php-mode'等等......

8

我可能會建議vimpager

首先,近期vim分佈(我相信6.0及以上)有尋呼機式的模式腳本。它非常簡單和功能強大,其操作與less類似。試試:vim '+help less' +only

然而,更好的是,Rafael Kitover已經寫了一個更強大和更強大的腳本vimpager。它可用on GitHub(或vimscripts)。如果你使用OS X並使用Homebrew,那麼就像brew install vimpager一樣簡單。

在這一點上,你可以簡單地set $PAGER=vimpager,甚至alias less=vimpager。它工作出色。

enter image description here