विम में हाल का फ़ाइल इतिहास?


132

मैं हाल की उन फ़ाइलों को एक्सेस करना चाहूंगा जो मैंने खोली थीं और फिर जीवीएम में बंद कर दीं। मैं GVim को अक्सर खोलता और बंद करता हूं। मैं पिछले सत्रों से हाल की फ़ाइलों को भी एक्सेस करना चाहूंगा।

क्या GVim हाल की फ़ाइलों को Word और कई अन्य डेस्कटॉप ऐप्स स्टोर के रूप में संग्रहीत करता है? उन तक कैसे पहुंचें?


इसी तरह के प्रश्न: stackoverflow.com/questions/309723/…
malgca

जवाबों:


229

कम से कम टर्मिनल विम पिछले दस फाइलों को ~/.viminfoफाइलमार्क सेक्शन में स्टोर करता है । आप उपयोग कर सकते हैं '0, '1, '2, ... '9उन के बीच में कूदने के लिए।

(संभवत: केवल '0आपके द्वारा संपादित की गई अंतिम फ़ाइल को वापस पाने के लिए उपयोगी है , जब तक कि आपकी मेमोरी खदान से अधिक मजबूत न हो।)

आप :browse oldfilesसंख्याओं के साथ मेनू प्राप्त करने के लिए कमांड का उपयोग भी कर सकते हैं ।


2
यदि आप उपयोग करना चाहते हैं 0- 9नेविगेशन के लिए निशान के रूप में, तो उन्हें मैन्युअल रूप से चिह्नित न करें
युआन

16
:browse oldफ़ाइल-सूची का उपयोग करें । और qजो फ़ाइल संपादित करने के लिए चुनने के लिए दर्ज करें।
12

5
:e #<1अंतिम फ़ाइल खोलता है, देखें :h c_#<
होट्सचे

: भाई ओएल काम करता है .. लेकिन आपको बहुत सी चाबियाँ टाइप करनी हैं .. पहले फाइलों की एक सूची प्राप्त करने के लिए, फिर q को दबाने के लिए, और फिर एक संख्या का चयन करने के लिए। मेरा मानना ​​है कि नीचे उल्लिखित MRU प्लगइन बहुत बेहतर है: stackoverflow.com/a/3171323/4752883 आपको <नेता> f को दबाना है, फिर या तो hjkl या अन्य कुंजियों के साथ फ़ाइल में ब्राउज़ करें / फ़ाइल नाम की खोज करें। फिर कर्सर के नीचे फ़ाइल खोलने के लिए ओ, एंटर, टी या वी दबाएं।
अल्फा_989

मैंने rmपूर्वोक्त विधि का उपयोग करके गलती से एक फ़ाइल पुनर्प्राप्त कर ली थी।
अग्रानुक्रम

55

सबसे अच्छा तरीका है कि मैं उपयोग है

:browse oldfiles

विम पर सबसे आसान तरीका है।


1
अच्छा! मैंने उस अभिव्यक्ति को "nmap bo: ब्राउज ओल्डफाइल्स <CR>" (उद्धरण के बिना) मेरे ~ / -vimrc में मैप किया। बस उस मोड को सामान्य मोड में मैप करना (बो) उस कमांड को निष्पादित करता है
विक्टोरिया स्टुअर्ट


22

यहाँ बहुत देर से जवाब ... @sarnolds जवाब पर खुलासा - आप पुराने इतिहास के साथ फाइल इतिहास देख सकते हैं @ h: h oldfiles या: h viminfo

:oldfiles 

इसके अलावा, आप दृश्य और सत्रों के साथ ठीक-ठाक फ़ाइल प्रबंधन कर सकते हैं ... @ hs: h mkview और: h mksession to Specific ...


4
यह जानना उपयोगी है कि वास्तव में किसी फ़ाइल को खोलने के बाद आपको पता चलता है कि यह किस सूची की संख्या से है :oldfiles। कोई इस :browseकमांड का उपयोग अंतःक्रियात्मक रूप से कर सकता है , जैसा कि @sarnold द्वारा समझाया गया है, लेकिन यह भी मैन्युअल रूप से ऐसा करना संभव है :e #<Nजहां N oldfilesसूची से एक नंबर है ।
Krzysztof Adamski

11

Ctrl स्विच करने वाली फ़ाइल का एक स्विस चाकू है , जो जानूस वितरण का भी हिस्सा है । इसमें :CtrlPMRUहाल ही में उपयोग की गई फ़ाइलों के बीच स्मार्ट लुकअप के साथ कमांड है।

नोट: CtrlP हाल ही में उपयोग की गई फ़ाइलों की अपनी सूची बनाए रखता है g:ctrlp_cache_dir."mru/cache.txt"। यह viminfo ( set viminfo?) का पुन: उपयोग नहीं कर रहा है जिसमें फ़ाइल चिह्नों की एक सूची है। यदि आप इस सूची को साफ़ करना चाहते हैं तो यह उपयोगी है।


1
CtrlP इंटरफ़ेस विम उपयोगकर्ताओं के लिए गैर सहज है? एमआरयू फ़ाइल = ~ / regexp / (आसानी से perl / grep regexp ~ / _viminfo के साथ किया गया) खोजने के लिए जटिल इंटरफ़ेस को सीखने में परेशानी के लायक नहीं है।
मॉस

हाँ .. मैं यह समझने की कोशिश कर रहा हूं कि Ctrl का उपयोग कैसे करें, लेकिन MRU का उपयोग करना बहुत आसान लगता है, अगर आपके पास फ़ाइलों का एक सरल सेट है ( stackoverflow.com/a/3171323/4752883 )। MRU में आप VIM regexp सर्च भी कर सकते हैं ताकि आपको अपनी जरूरत की फाइल मिल जाए ...
Alpha_989

9

:bro olउस नंबर का उपयोग करें जो उस फ़ाइल से मेल खाती है जिसे आप खोलना चाहते हैं।


5

CtrlP प्लगइन आप अच्छी तरह से इस आदेश के साथ मौजूदा निर्देशिका में फ़ाइलों के रूप में के रूप में के माध्यम से खोज करने पर अपने हाल ही में उपयोग की गई फ़ाइलों की सुविधा देता है:

nnoremap <c-p> :CtrlPMixed<cr>

यह आपको विम कमांड और एमआरयू प्लगइन में निर्मित से निपटने में होने वाली परेशानी से बचाता है, न तो आपको फजी फाइल सर्च करने देता है, जो बड़ी परियोजनाओं पर काम करते समय महत्वपूर्ण है।


उन लोगों के लिए जो Ctrl-P के डिफ़ॉल्ट रूप से कार्यात्मक रूप से मैप करने के बारे में प्रतिरोधी हैं: आप Ctrl-P को सामान्य रूप से खोल सकते हैं और मोड के बीच स्विच करने के लिए Ctrl-F या Ctrl-B का उपयोग कर सकते हैं (MRU उनमें से एक है)
Gustavo Matias


2

जैसा कि यहां टिप्पणियों में देखा गया है (http://stackoverflow.com/questions/571955/undo-close-tab-in-vim), आपकी फ़ाइल शायद अभी भी एक बफर में खुली है:

:ls " get the buffer number
:tabnew +Nbuf " where N is the buffer number

उदाहरण के लिए आप एक नए टैब में तीसरे बफर को फिर से खोल सकते हैं (यदि आप टैब का उपयोग नहीं करते हैं तो इसके बजाय ई का उपयोग करें):

:tabnew +3buf

1
हां, यह काम करता है। लेकिन निश्चित रूप से एक संपादक का काम चीजों को आसान बनाना है? यदि आपको कोई कमांड जारी करना है, तो नेत्रहीन किसी चीज़ की पहचान करें, एक आईडी याद रखें, फिर एक और आदेश जारी करें जो उपयोगकर्ता समय की वास्तविक बर्बादी है। आपका उत्तर सही है, और मेरा मतलब अपराध नहीं है, लेकिन यह विम के हत्यारे की विशेषताओं में से एक के लिए नहीं है!
Artfulrobot

मुझे भी यही समस्या थी। क्या आपने बफ़ेक्सप्लायर की कोशिश की है? यह ls और: tabnew + Nbuf को जोड़ती है। अब आप बफ़र्स की सूची को खोल सकते हैं, और इसे एक नए टैब आदि में खोल सकते हैं .. एक कीस्ट्रोक (ओ, टी, वी) एटके के साथ।
अल्फा_989

2

आप कमांड लाइन से सूची तक पहुँचने में सक्षम हो सकते हैं:

grep '^>' ~/.viminfo|cut -c3-|sed 's,~,'"$HOME"','

स्पष्टीकरण:

grep '^>' ~/.viminfo  #find the list of recent files
cut -c3-              #remove the first 2 characters
sed 's,~,'"$HOME"','  #replace ~ with absolute path

यदि आप नियमित रूप से इसका उपयोग करते हैं, तो आपको बैश उर्फ ​​हो सकता है

alias vim_mru="grep '^>' ~/.viminfo|cut -c3-|sed 's,~,'\"$HOME\"','"

2

, यहाँ मेरी 2 सेंट जोड़ना जो इस तरह के एक अद्भुत उपकरण है हो गया क्योंकि fzf जैसा कि पहले उल्लेख नहीं किया गया था:
fzf.vim एक है :Historyआदेश आप एक में सबसे हाल ही इस्तेमाल किया फ़ाइलें खोजने देता है फजी और खोज लिखते हुए तरीके से।
मैं इस कमांड के डिफॉल्ट (डिफॉल्ट) व्यवहार को fzf को फिर से खोज परिणाम सूची में सबसे अच्छे मैच की अनुमति न देकर अनुकूलित करता हूं: मैं चाहता हूं कि सभी मैचिंग फाइलनामों का क्रम उसी क्रम में बना रहे, जिसमें ये फाइलें अंतिम रूप से इस्तेमाल की गई थीं।
इस अनुकूलन को पूरा करने के लिए, मैंने Historyfzf.vim प्लगइन द्वारा परिभाषित डिफ़ॉल्ट कमांड को ओवरराइड करने के लिए अपने .vimrc में निम्नलिखित को जोड़ा :

    command! -bang -nargs=* History
      \ call fzf#vim#history({'options': '--no-sort'})

1

एक और प्लगइन है कि चलो आप पिछले संशोधित लोगों की सूची से फ़ाइल का चयन करें staritfy है । यह आपकी स्क्रीन को सबसे हाल ही में संशोधित फ़ाइलों की सूची के साथ बदल देता है। आप इस पृष्ठ को बाद में :Startifyकमांड का उपयोग करके हमेशा खोल सकते हैं ।


1
स्थापित करने के लिए भी प्रारंभ नहीं कर सका - मूल स्थापित और उपयोग पर अधिक डॉक्स की आवश्यकता है। एमआरयू का उपयोग करना, क्योंकि इसे स्थापित करना और उपयोग करना आसान था।
मॉस

1

:ls बाएं हाथ के कॉलम पर बफर नंबर वाली हाल की फाइलों को सूचीबद्ध करने के लिए।

फिर :b{buffer-number}वहाँ कूदना है।

उदाहरण: :lsफाइलों की सूची दिखाता है। मैं अपने द्वारा देखी गई तीसरी-अंतिम फ़ाइल पर कूदना चाहता हूं। :b3मुझे वहाँ ले जाएगा।

तेजी से खोज के लिए, :lsकिसी चीज़ का नक्शा , जैसे <Leader>.आपकी .vimrc फ़ाइल में।


1

इसके अलावा आप ctrl+ के साथ वापस जा सकते हैं O

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