2013-05-20 55 views
1

假设我有大量的日志输出或者我想要密切关注的内容,以便能够尽可能多地查看输出。在列中显示终端输出以便高效地查看更多输出

我有很多的屏幕房地产的,并更好地利用它,我希望能够建立一个特殊的缓冲区,将垂直包住端子输出,所以它看起来像一列布局(如在书或网页中)。

这样我可以例如将整个宽屏监视器专用于三列输出,可以同时显示三倍于垂直输出的垂直输出。我认为这是tmux可以很好地支持的,尽管由于移动文本的分裂性质,它可能会给网络流量造成更多的负载。

最好的情况是,如果tmux已经通过一些选项支持这个,但是如果不支持,也许它可以被脚本化!是否有可能以编程方式“检索”特定窗格的tmux历史缓冲区的内容?我会反对一个脚本,它需要在每个输入的输出行上拨打tmux,但对于慢速输出日志来说,它仍然值得。

也许这甚至不是需要tmux的东西,也许这是寻呼机程序的特征空间内。 Vim可能无法处理它,因为我会要求它支持ANSI颜色代码显示(Vim无法很好地显示)。

这里的动机是更好地利用水平空间。在某种程度上它是寻呼机程序的功能扩展到第二维。如果我可以简单地购买更多显示器,以便能够同时查看更多数据,而无需操纵我的软件以向我显示数据的不同部分,那么我可以通过剪切我总是做的所有滚动来更有效地工作。

寻找来回>>设置窗格和滚动两个缓冲区,以寻找来回滚动>>在开始来回在一个缓冲

没有操纵>>操作一次> >在每次迭代

更多的沉思操作: 我只是想到了一个好主意,以获得该功能内置快速和肮脏的,是如果我能想出一个方法来设置一个寻呼机(甚至只是cat ,真的)显示最后一页(这是一个不做任何事情的简单例子),显示第二个页面最后一页,显示倒数第三页等。这些可以在一组tmux窗格中组合在一起。那么会发生什么呢?随着一条新线路进入,所有这些视图都会滚动,并且我们有一种错觉,即它们不是一个缓冲区,它们都是单个缓冲区的连续显示。所以这将是一个基于tmux的hack,幸好不需要对每个新行进行某种类型的tmux调用...... tmux让我们可以查询窗格的高度,以便我们可以确定在每个缓冲区中显示哪个“部分”。如果可以使缓冲区同步滚动历史记录,则整组“列”也可以滚动。

回答

0

上述工作正常,如果你在看三个文件,但它听起来像你正在看一个。我写了一些应该做正确事情的Python(作为尾部的替代品)。

#!/usr/bin/python 

import time, os, sys 

fname = sys.argv[1] 
lines_per_page = 50 
if len(sys.argv) > 2: 
    page_from = int(sys.argv[2]) 
    pages_per_page = int(sys.argv[3]) 
else: 
    page_from = 0 
f = open(fname) 
f.seek(os.stat(fname).st_size) 

b = [] 

while 1: 
    where = f.tell() 
    line = f.readline() 
    if not line: 
     time.sleep(1) 
     f.seek(where) 
    else: 
     # keep a buffer 
     if page_from > 0: 
      b.append(line) 
      front = lines_per_page * page_from 
      if len(b) > front: 
       print b[-front], 
     else: 
      print line, 

你会调用此为tail.py file 0 num_of_rows_in_your_term,然后通过1其他每个垂直窗格递增。

0

前几天我遇到了this gem(约2个月前)。我的vimrc包含这个神奇的东西:

:noremap <silent> <Leader>c :<C-u>let @z=&so<CR>:set so=0 noscb<CR>:bo vs<CR>Ljzt:setl scb<CR><C-w>p:setl scb<CR>:let &[email protected]<CR> 

非常非常酷,而且功能非常强大,因为它是Vim。唯一的缺点是Vim不能真正有效地用于查看实际的原始终端输出(其中可能包括ANSI颜色代码,这是Vim在处理中特别可怕的事情),但是对于大多数目的而言,查看(和编辑)非常大的源文件等,这很好。

编辑:我注意到,这实际上并没有真正回答我的问题,这基本上是如何更好地填充我的屏幕与许多列终端输出值(比如脚本或编译或日志输出),这vim缓冲区事情并不是真的很棒。

虽然有一些潜力,无论日志可以传送到文件中,然后Vim可以通过编写脚本不断刷新并将其加载到多列缓冲区中。