2009-04-24 11 views
12

के रूप में करना मैं वीआईएम को लॉगफाइल-व्यूअर के रूप में उपयोग करना चाहता हूं। क्या वर्तमान फ़ाइल को नियमित समय अंतराल (~ 1 एस) में पुनः लोड करना संभव है?वीआईएम का उपयोग लॉगफाइल-व्यूअर

+0

"कम-एफ" कहने के लिए आपको क्या लाभ देता है? –

+3

सुंदर वाक्यविन्यास हाइलाइटिंग। (उदा। मैं त्रुटि त्रुटि स्तर लाल रंग कर सकते हैं)। मुझे इसे विंडोज के तहत उपयोग करना है। –

+1

और बढ़ी हुई खोज को हाइलाइट किया गया। –

उत्तर

9

उपयोग :set autoread

+1

हालांकि यह केवल जीवीआईएम में काम करता है। – rndstr

+0

नहीं, यह भी विम में काम करता है। –

+1

यह केवल तब फ़ाइल को अपडेट करेगा जब (g) vim ने हालांकि ध्यान केंद्रित किया है। यह स्वचालित रूप से नीचे तक स्क्रॉल नहीं करेगा। तो यह वास्तव में उपयोगी नहीं है। – rkrzr

5

इस VIM tip देखें। यह लॉग लाइन नंबरिंग

+0

विवरण से, ऐसा लगता है कि इस प्लगइन में विंडोज के तहत समस्याएं हैं और किसी भी मामले में केवल तभी जब कर्सर विम में स्थानांतरित हो जाता है। क्या ये सही है? –

0

के साथ पूंछ (जैसे पूंछ-एफ) प्रदान करता है मुझे इसे छोटा और बिना किसी हैकिंग या बाहरी स्क्रिप्ट के पसंद है। आप के लिए जब जरूरत पूर्व से इस oneliner (vim whithin) चला सकते हैं (या जब लॉग-फ़ाइलें खोल रहे हैं के लिए vimrc में हर कमांड के शब्दों में कहें,।)

:set autoread | au CursorHold * checktime | call feedkeys("lh") 

(अगर आप लगभग कूद (चाहेगा) फ़ाइल के अंत में, बस के बजाय "lh" "जी" feedkeys साथ) का उपयोग

स्पष्टीकरण:

  • autoread: जब बाहर से बदल फ़ाइल पढ़ता है (लेकिन यह अपने आप ही काम नहीं करता , कोई आंतरिक टाइमर या सोम नहीं है ऐसा कुछ। जब vim में एक कमांड की तरह, एक कार्रवाई करता है यह केवल फ़ाइल को पढ़ने जाएगा पूर्व :!
  • CursorHold * checktime: जब कर्सर समय updatetime में निर्दिष्ट checktime निष्पादित किया जाता है (जो डिफ़ॉल्ट रूप से 4000 मिलीसेकंड है) के लिए उपयोगकर्ता द्वारा ले जाया नहीं किया गया है , जो फ़ाइल
  • call feedkeys("lh") के बाहर से परिवर्तनों की जांच करता है: कर्सर एक बार, दाएं और पीछे छोड़ दिया जाता है। , अब vim बताएगा कि फ़ाइल - और फिर कुछ भी नहीं (... जिसका अर्थ है, कि CursorHold शुरू हो रहा है, जिसका अर्थ है कि हम एक पाश है) होता है

जब call feedkeys("G") का उपयोग कर स्क्रॉल रोकने के लिए, पर अमल :set noautoread परिवर्तन बदल गया था अगर कोई परिवर्तन बदलना चाहता है या नहीं)

मुझे विम में लॉगफाइल देखने के विचार पसंद हैं (tail -f के बजाय), उदाहरण के लिए जब आप बिना किसी स्क्रीन/tmux के एसएसएच सत्र में काम कर रहे हों। इसके अतिरिक्त आप लॉगफ़ाइल से सीधे कॉपी कर सकते हैं, यदि आवश्यक हो तो, या उत्पादन सीधे बचाने या ... जो भी आप vim :)

* इस answer (PhanHaiQuang द्वारा एक जवाब और flukus द्वारा एक टिप्पणी की चर्चा करते हुए) से साथ कर सकते हैं