मैं अच्छे प्रदर्शन के साथ बहुत बड़ी फाइलें कैसे खोल सकता हूं?


27

मेरे पास सर्वर लॉग फाइलें हैं जो उबंटू के आकार में कई गीगाबाइट हैं। जब मैं उन्हें खोलने का प्रयास करता हूं, तो टर्मिनल एक या दो मिनट के लिए लॉक हो जाता है जबकि फाइल विम में लोड हो जाती है। क्या इस समय को कम करने का एक तरीका है, उदाहरण के लिए मांग पर फ़ाइल को लोड करने के लिए विम या किसी अन्य विधि से सेट करके?


4
उपयोग क्यों नहीं less?
बर्नहार्ड

1
क्या आप फ़ाइलों को किसी भी तरह से हेरफेर करने का इरादा रखते हैं, या क्या आप उन्हें देखना चाहते हैं?
२००

1
मैं फ़ाइलों को संपादित करना चाहूंगा।
पेट्री-बी

संबं
धत लं क

सबसे अधिक संभावना है कि मुझे साइट से हमेशा के लिए प्रतिबंधित कर दिया जाएगा, लेकिन मुझे यह कहना होगा: जब यह बड़ी फ़ाइलों के साथ काम करने की बात आती है तो Emacs नौकरी के लिए उपकरण है। :-)
toro2k

जवाबों:


25

सबसे पहले, बिना प्लग या vimrc के vim लोड करने का प्रयास करें:

vim -u NONE gargantuan.txt

यदि यह पर्याप्त रूप से तेज़ है, तो आपके पास संभवतः सिंटैक्स हाइलाइटिंग, फोल्डिंग, प्लगइन्स, या कुछ और है जो अधिकतर समय ले रहा है। अपने vimrc में सामान को बंद करने का प्रयास करें (और अपने प्लगइन्स को अक्षम करने तक) जब तक आप अपराधी को नहीं ढूंढ लेते।

इसके अलावा यह सुनिश्चित कर लें set ft= syn=और syntax off

यदि यह मदद नहीं करता है, तो शायद यह मामला है कि आपके पास बहुत लंबी लाइनें हैं जो समस्या पैदा कर रही हैं। set nowrapलाइन रैपिंग को बंद करने का प्रयास करें ।


1
vim -U NONE -N gargantuan.txtवही काम करेंगे जबकि वीआईएम चलाते समय nocompatibleजिसमें "vi iMproved" मोड चलता है, पुराने "vi" के साथ संगत होने की कोशिश करने के बजाय
ecerulm

15

विम काम के लिए गलत उपकरण है: आपको पेजर का उपयोग करना चाहिए moreया जैसे less

यदि आप एक संपादक का उपयोग करने पर जोर देते हैं, तो इस उदाहरण को विम विकी से अनुकूलित करने का प्रयास करें :

augroup LargeFile
        let g:large_file = 10485760 " 10MB

        " Set options:
        "   eventignore+=FileType (no syntax highlighting etc
        "   assumes FileType always on)
        "   noswapfile (save copy of file)
        "   bufhidden=unload (save memory when other file is viewed)
        "   buftype=nowritefile (is read-only)
        "   undolevels=-1 (no undo possible)
        au BufReadPre *
                \ let f=expand("<afile>") |
                \ if getfsize(f) > g:large_file |
                        \ set eventignore+=FileType |
                        \ setlocal noswapfile bufhidden=unload buftype=nowrite undolevels=-1 |
                \ else |
                        \ set eventignore-=FileType |
                \ endif
augroup END

कर सकते हैं lessया moreभी मेरी फाइल में परिवर्तन कर?
मार्टिन टूरनोइज

3
वे निश्चित रूप से नहीं कर सकते। लॉग संपादित करने के लिए नहीं हैं।
रोमेनिल

5
इस उद्देश्य के लिए सेड का आविष्कार किया गया था। आप यह पता लगाते हैं कि आप कौन से परिवर्तन करना चाहते हैं, प्रतिस्थापन के रूप में व्यक्त किए गए हैं, फिर sedउन्हें निष्पादित करने के लिए चलाएं । यह भी स्ट्रीम पर काम करता है (यानी फ़ाइल सामग्री जिसका कोई अंत नहीं है क्योंकि यह उत्पादित किया जा रहा है)।
रीइनियरिएपोस्ट

मैं एलियास है less, moreऔर manकरने के लिए vimpagergithub.com/rkitover/vimpager
एलेक्स क्रॉल

5

लार्जफ़िले.विम प्लगइन को बड़ी फ़ाइलों को तेज़ी से संपादित करने के लिए डिज़ाइन किया गया है। Http://www.drchip.org/astronaut/vim/index.html#LARGEFILE देखें ।

पृष्ठ से:

बड़ी फ़ाइलों के डिफ़ॉल्ट रूप से अधिक तेज़ संपादन की अनुमति देता है (डिफ़ॉल्ट: 100MB + "बड़ी" हैं), घटनाओं को बंद करने की कीमत पर, पूर्ववत, वाक्यविन्यास हाइलाइटिंग, आदि। यह भी उपलब्ध है जहाँ आप इसे रैंक कर सकते हैं।

मैनुअल के अनुसार, प्लगइन बस स्थापित होने से काम करता है। आप कटऑफ g:LargeFileको एमबी के पूर्णांक संख्या में बदलकर सेट कर सकते हैं , जिसे वह 20 एमबी के लिए चूक कहता है (परियोजना विवरण के विपरीत जो 100 कहता है)

वर्तमान में लोड की गई फ़ाइल पर प्लगइन क्रमशः कमांड देता है :UnLarge, :Largeऔर :Large!अक्षम करने के लिए, पुन: प्रयोज्य, या छोटी फ़ाइलों के लिए सक्षम करने के लिए।


2

मैंने सुना है कि सिंटैक्स हाइलाइटिंग को बंद करने से मदद मिल सकती है:

:syntax off

भी सक्षम तह के किसी भी प्रकार के बाद एक बड़े पैमाने पर प्रभाव पड़ता है
craigp

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.