2015-07-28 34 views
14

Mam problem z znalezieniem odpowiedniego rozwiązania dla najnowszych plików w plugin FZF vim.Rozwiązanie robocze dla najnowszych plików FZF w Vim?

Wtyczka ta powinna posiada funkcje takie jak:

  • występów plików otwarty w bieżącej sesji vim (jak bufory)
  • plików filtrów jak NERD_tree, uciekinier

Próbowałem dwa rozwiązania

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 

Ten działa podczas sesji otwartej, ale po ponownym uruchomieniu vima nie widzę wszystkie ostatnio otwarte pliki.

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 

To rozwiązanie filtruje poprawnie pliki, ale działa tylko dla plików otwartych w poprzedniej sesji. Więc muszę ponownie uruchomić vim, aby uzyskać bieżący bufor.

Czy znalazłeś działające rozwiązanie dla FZFMru w VIM?

Odpowiedz

14

Znalazłem najnowszą wtyczkę Junegunn.

Plug 'junegunn/fzf.vim' 

Obejmuje ona sprawę.

Wystarczy dodać

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

Thanks Junegunn :)

+4

pojawia się to nie działa (przynajmniej już). "Nie polecenie edytora: Historia" – matt

+0

Działa dla mnie z wtyczkami nvim 0.2.2 i wtyczkami fzf. –

7

Jednym z możliwych rozwiązań jest zastosowanie wtyczki neomru, która zapisze ostatnio odwiedzone pliki w pamięci podręcznej pod adresem ~/.cache/neomru/file.

Po zainstalowaniu wtyczki neomru z preferowanym menedżer wtyczek można zdefiniować odwzorowanie przeszukać plik cache, na przykład:

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

działa zgodnie z oczekiwaniami. Dzięki. Tylko nie wiem, czy potrzebujemy zjednoczyć wsparcie tutaj :) – tomekfranek