Vim'deki son dosya geçmişi?


132

GVim'de açıp kapattığım son dosyalara erişmek istiyorum. GVim'i sık sık açıp kapatıyorum. Önceki oturumlardan son dosyalara da erişmek istiyorum.

GVim, son dosyaları Word ve diğer birçok masaüstü uygulamasının sakladığı bir yerde depoluyor mu? Onlara nasıl erişilir?


Yanıtlar:


229

En azından terminal vim, önceki on dosyayı ~/.viminfofilemarks bölümünde saklar. Sen kullanabilirsiniz '0, '1, '2, ... '9aralarında atlamak.

( '0Hafızanız benimkinden daha güçlü değilse, muhtemelen yalnızca düzenlediğiniz son dosyaya geri dönmek için kullanışlıdır .)

:browse oldfilesRakamlar içeren bir menü almak için komutu da kullanabilirsiniz .


2
Kullanmak istiyorsanız 0- 9navigasyon işareti olarak, bunları manuel olarak işaretlemeyin
yuan

16
:browse oldget file-list kullanın . ve qhangi dosyanın düzenleneceğini seçmek için girin .
songhir

5
:e #<1son dosyayı açar, bakınız :h c_#<.
Hotschke

: genel çalışıyor .. ama çok sayıda tuş yazmanız gerekiyor .. önce dosyaların bir listesini almak için, sonra q tuşuna ve sonra bir numara seçmek için. Aşağıda bahsedilen MRU eklentisinin çok daha iyi olduğuna inanıyorum: stackoverflow.com/a/3171323/4752883 <leader> f tuşuna basmanız, ardından hjkl veya diğer tuşlarla dosyaya göz atmanız / dosya adını aramanız gerekir. Ardından imlecin altındaki dosyayı hızlıca açmak için o, enter, t veya v tuşlarına basın.
alpha_989

rmYukarıda belirtilen yöntemi kullanarak yanlışlıkla sildiğim bir dosyayı kurtardım .
tandem

55

Kullandığım en iyi yol

:browse oldfiles

Vim için en kolay yol.


1
Güzel! Bu ifadeyi ~ / .vimrc dosyamda "nmap bo: browse oldfiles <CR>" (alıntılar olmadan) olarak eşledim. Normal modda bu eşlemeyi (bo) yazmak bu komutu çalıştırır
Victoria Stuart


22

Burada çok geç cevap ... @sarnolds cevabını açıklıyor - Dosya geçmişini eski dosyalar komutuyla görüntüleyebilirsiniz @ see: h oldfiles veya: h viminfo

:oldfiles 

Ayrıca, görünümler ve oturumlarla ayrıntılı bir dosya yönetimine sahip olabilirsiniz ... @ see: h mkview ve: h mksession için spesifikasyonlar ...


4
Listesinden numarasını öğrendikten sonra bir dosyanın nasıl açılacağını bilmek faydalıdır :oldfiles. :browse@Sarnold tarafından açıklandığı gibi , bunu etkileşimli olarak komut kullanarak yapabilirsiniz , ancak bunu :e #<N, N'nin oldfileslisteden bir sayı olduğu yerde kullanarak manuel olarak yapmak da mümkündür .
Krzysztof Adamski

11

Aynı zamanda janus dağıtımının bir parçası olan CtrlP eklentisini değiştiren bir İsviçre bıçağı var . Bu sahiptir son kullanılan dosyalar arasında akıllı arama ile komutu.:CtrlPMRU

Not: CtrlP içinde en son kullanılan dosyaların kendi listesini tutar g:ctrlp_cache_dir."mru/cache.txt". set viminfo?Dosya işaretlerinin bir listesini içeren viminfo ( ) ' yu yeniden kullanmıyor . Bu listeyi temizlemek istiyorsanız bu yararlıdır.


1
CtrlP arayüzü vim kullanıcıları için sezgisel değil mi? MRU dosyası = ~ / regexp / (perl / grep regexp ~ / _viminfo ile kolayca yapılabilir) bulmak gibi basit bir şey yapmak için karmaşık arayüzü öğrenme zahmetine değmez.
mosh

Evet .. Ctrlp'yi nasıl kullanacağımı anlamaya çalışıyordum, ancak basit bir dosya kümeniz varsa ( stackoverflow.com/a/3171323/4752883 ) MRU'nun kullanımı çok daha kolay görünüyor .
MRU'da

9

:bro olAçmak istediğiniz dosyaya karşılık gelen numarayı kullanın ve ardından tuşuna basın.


5

CtrlP eklentisi de bu komutla geçerli dizinde dosyaları olarak olarak son kullanılan dosyaları arama yapmanızı sağlar:

nnoremap <c-p> :CtrlPMixed<cr>

Bu, sizi yerleşik Vim komutları ve MRU eklentisi ile uğraşma zahmetinden kurtarır, bunların hiçbiri daha büyük projeler üzerinde çalışırken kritik olan bulanık dosya araması yapmanıza izin vermez.


Ctrl-P'nin varsayılan işlevsel olarak yeniden eşleştirilmesi konusunda dirençli olanlar için: Ctrl-P'yi normal olarak açabilir ve modlar arasında geçiş yapmak için Ctrl-F veya Ctrl-B'yi kullanabilirsiniz (MRU bunlardan biridir)
Gustavo Matias


2

Buradaki yorumlarda görüldüğü gibi (http://stackoverflow.com/questions/571955/undo-close-tab-in-vim), dosyanız büyük olasılıkla bir arabellekte hala açık:

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

Örneğin, üçüncü arabelleği yeni bir sekmede yeniden açabilirsiniz (sekmeler kullanmıyorsanız bunun yerine: e kullanın):

:tabnew +3buf

1
Evet, bu çalışıyor. Ama bir editörün işi kesinlikle işleri kolaylaştırmaktır? Bir komut vermeniz gerekiyorsa, bir şeyi görsel olarak tanımlayın, bir Id'yi hatırlayın, ardından gerçek bir kullanıcı zamanı kaybı olan başka bir komut verin. Cevabınız doğru ve gücenmeyi kastetmiyorum ama bu Vim'in katil özelliklerinden birini yapmaz!
artfulrobot

Ben de aynı sorunu yaşadım. Buffexplorer'ı denedin mi? Ls ve: tabnew + Nbuf'u birleştirir. Artık arabelleklerin listesini açabilir ve yeni bir sekmede açabilirsiniz. Tek bir tuşa basarak (o, t, v) etcc.
alpha_989

2

Listeye komut satırından şu şekilde erişebilirsiniz:

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

Açıklama:

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

Bunu düzenli olarak kullanırsanız bir bash takma adınız olabilir

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

2

Fzf Daha önce de belirttiğimiz değildi çünkü böyle harika bir araç olduğu, burada benim 2 sent Ekleme:
fzf.vim bir vardır :Historybir de son kullanılan dosyaları arama sağlayan komutu bulanık ve Yazarken arama şeklini.
Bu komutun (varsayılan) davranışını, fzf'nin arama sonuçları listesini en iyi eşleşecek şekilde yeniden düzenlemesine izin vermeyerek özelleştiriyorum: Tüm eşleşen dosya adlarının sırasının, bu dosyaların en son kullanıldığı sırada kalmasını istiyorum.
Bu özelleştirmeyi gerçekleştirmek için History, fzf.vim eklentisi tarafından tanımlanan varsayılan komutu geçersiz kılmak için .vimrc dosyama aşağıdakileri ekledim:

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

1

Son değiştirilenler listesinden dosya seçmenize izin veren bir eklenti daha staritfy . Başlangıç ​​ekranınızı en son değiştirilen dosyaların bir listesiyle değiştirir. Bu sayfayı her zaman :Startifykomut kullanarak açabilirsiniz .


1
Kuruluma bile başlayamadı - temel kurulum ve kullanım hakkında daha fazla dokümana ihtiyaç var. MRU kullanmak, çünkü kurulumu ve kullanımı kolaydı.
mosh

1

:ls sol sütunda arabellek numarası ile son dosyaları listelemek için.

O zaman :b{buffer-number}oraya atlamak için yap.

Örnek: :lsdosyaların listesini gösterir. Ziyaret ettiğim son üçüncü dosyaya atlamak istiyorum. :b3beni oraya götürecek.

Daha hızlı arama için, .vimrc dosyanızdaki bir :lsşeye <Leader>.eşleyin.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.