2013-05-20 67 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可以通過編寫腳本不斷刷新並將其加載到多列緩衝區中。