2015-11-20 75 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