2015-07-28 9 views
14

FZF vim eklentisinde en son dosyalar için uygun bir çözüm bulmakta sorun yaşıyorum.VF'deki FZF'nin en yeni dosyaları için çalışma çözümü?

gibi özellikler vardır gerektiğini Bu eklenti: kaçak

  • gösterisi dosyaları (tampon gibi) geçerli vim oturumda NERD_tree gibi
  • filtre dosyalarında açılan

Ben iki çözüm

çalıştı
command! FZFMru call fzf#run({ 
\ 'source': reverse(s:all_files()), 
\ 'sink': 'edit', 
\ 'options': '-m --no-sort -x', 
\ 'down': '40%' }) 

function! s:all_files() 
    return extend(
    \ filter(copy(v:oldfiles), 
    \  "v:val !~ 'fugitive:\\|\\.svg|NERD_tree\\|^/tmp/\\|.git/'"), 
    \ map(filter(range(1, bufnr('$')), 'buflisted(v:val)'), 'bufname(v:val)')) 
endfunction 

Bu, açık oturum sırasında çalışır, ancak vim'i yeniden başlattığımda görmüyorum son açılan tüm dosyalar.

command! FZFMru call s:fzf_wrap({ 
    \'source': 'bash -c "'. 
    \    'echo -e \"'.s:old_files().'\";'. 
    \    'ag -l -g \"\"'. 
    \   '"', 
    \}) 

function! s:fzf_wrap(dict) 
    let defaults = { 
    \'sink' : 'edit', 
    \'options' : '+s -e -m', 
    \'tmux_height': '40%', 
    \} 
    call extend(a:dict, defaults, 'keep') 
    call fzf#run(a:dict) 
endfunction 

function! s:old_files() 
    let oldfiles = copy(v:oldfiles) 
    call filter(oldfiles, 'v:val !~ "fugitive"') 
    call filter(oldfiles, 'v:val !~ "NERD_tree"') 
    call filter(oldfiles, 'v:val !~ "^/tmp/"') 
    call filter(oldfiles, 'v:val !~ ".git/"') 
    call filter(oldfiles, 'v:val !~ ".svg"') 
    return join(oldfiles, '\n') 
endfunction 

Bu çözüm düzgün dosyaları filtreler, ancak yalnızca önceki oturumda açılmış dosyalar için çalışır. Bu yüzden mevcut arabelleği almak için vim'i yeniden başlatmalıyım.

VIM'de FZFMru için çalışma çözümü buldunuz mu?

cevap

14

Ben son Junegunn eklentisi buldum.

Plug 'junegunn/fzf.vim' 

Bir kılıfı kapsar.

Sadece

nmap <silent> <leader>m :History<CR> 

Teşekkür Junegunn ekleyin :)

+4

bu işe yaramaz (en azından artık). "Editör komut değil: Tarih" – matt

+0

Nvim 0.2.2 ve fzf eklentileri ile bugüne kadar çalışıyor. –

7

Olası bir çözüm, en son visted dosyalarınızı ~/.cache/neomru/file adresinde bulunan bir önbelleğe kaydedecek olan neomru eklentisinden yararlanmaktır.

tercih eklenti yöneticisi ile neomru Eklentiyi yükledikten sonra, örneğin, önbellek dosyası aramak için bir eşleme tanımlayabilirsiniz:

nnoremap <silent> <Leader>m :call fzf#run({ 
\ 'source': 'sed "1d" $HOME/.cache/neomru/file', 
\ 'sink': 'e ' 
\ })<CR> 
+1

beklendiği gibi çalışıyor. Teşekkürler. Burada destek desteği ihtiyacımız olup olmadığından emin değilim :) – tomekfranek

0

kontrol dışarı https://github.com/junegunn/fzf/wiki/Examples-(vim). MRU, etiket arama ve çok daha fazlası dahil olmak üzere çok sayıda güzel şey var. Junegunn, MRU'yu beklendiği gibi gerçekleştirdi:

command! FZFMru call fzf#run({ 
\ 'source': v:oldfiles, 
\ 'sink': 'e', 
\ 'options': '-m -x +s', 
\ 'down': '40%'}) 
İlgili konular