2015-11-20 73 views
0

http://i.stack.imgur.com/MC6vX.png from https://stackoverflow.com/a/21666354/433570根據預定義的條件爲文本編輯器(如emacs)着色文本?

這是基於dos的解決方案,但是可以爲基於Linux的系統完成嗎?

我想突出我的日誌文件中的東西。

例如,我想突出顯示響應時間比1秒慢的nginx日誌行。

**編輯**

目前我使用hi-lock-mode
例如,我把一個標記上線,顯示響應速度慢,然後用正則表達式&喜鎖突出顯示。

我想這是好的解決方案,現在。
我想知道是否有更好的解決方案。
高保真模式與用戶定義的功能,而不是正則表達式是我所希望的。

我會定義函數和函數顏色之間的映射。 那我就M-x apply [function]

def slow(line): 
    if ... : 
    return True 
    return False 

slow: yellow, 
iPhone: blue, 

我認爲這將是檢查日誌有用..
我不知道是否有可用的類似的功能在那裏?

+0

你在問怎麼打印到彩色終端或如何讓emacs突出顯示一個文件? – SLaks

+0

如果某些條件匹配,我想突出顯示行/單詞。我希望我仍然可以執行文本編輯器(最好是emacs)提供的其他操作。我不在乎這個機制。可以插入格式化方向(如在html中)以顯示高亮度,或者可以動態地執行此操作(如在emacs font-lock-mode中)。 – eugene

+0

查看您最喜愛的編輯器語法高亮選項的文檔。 – SLaks

回答

0

爲什麼不爲自己的文件編寫自己的主要模式?

具有字體鎖支持的基本主要模式並不難實現。網上有很多這方面的文檔。所有你需要的是一個語法表(這樣Emacs就可以知道哪些字符開始字符串等等)以及用於語法高亮顯示的一些字體鎖定規則。

最簡單的方法是從現有的開始,例如ini-mode,這是一種編輯Windows風格的ini文件的小型主要模式。

除非您的文件具有特定的文件擴展名或遵循特定的命名約定,否則您可能需要向magic-mode-alist添加條目,該條目爲您提供了一種基於內容而不是文件名識別特定文件的方法。

如果你想看到的是使用Emacs生成語法的ANSI版本的文件使用moreless觀察時,一個終端窗口着色,可以使用e2ansi,包高亮文件。

+0

哦謝謝,但字體鎖似乎不支持規則的通用函數。我能否定義一條規則說明,突出顯示響應時間較長的一條線? '0 223.33.164.38 [20/Nov/2015:07:50:21 +0000]「PATCH/rest_api/android_devices/40932 HTTP/1.1」200 283 0.179 0.080「 - 」「Dalvik/1.6。0(Linux; U; Android 4.4.2; SHV-E330S Build/KOT49H)「'這裏的響應時間是0.179,我想我可以改變它的格式,使它看起來像.. .. rEsPoNsE:0.179 – eugene

+0

相反,font- lock可以很好地處理自定義函數,如果用函數符號替換正則表達式,函數會被調用,這樣就可以匹配任何你想要的內容,更高級的示例請參見https://github.com/Lindydancer/lisp-extra -font-lock – Lindydancer

+0

哦..這很好..除了lisp很難看::(如果我可以用python來定義函數,這將是完美的 – eugene