plugin plug manager junegunn instalar vim vim-plugin mru neovim fzf

plug - ¿Solución de trabajo para los archivos más recientes de FZF en Vim?



vim plug in manager (3)

Echa un vistazo a https://github.com/junegunn/fzf/wiki/Examples-(vim) . Un montón de cosas interesantes allí, incluyendo MRU, búsqueda de etiquetas, y mucho más. Junegunn implementó MRU simplemente como:

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

Tengo un problema con encontrar una solución adecuada para los archivos más recientes en el complemento FZF vim.

Este plugin debe tener características como:

  • Mostrar archivos abiertos en la sesión actual de vim (como buffers)
  • Filtrar archivos como NERD_tree, fugitivo.

Probé dos soluciones

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

Este funciona durante la sesión abierta, pero cuando reinicio vim no veo todos los últimos archivos abiertos.

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

Esta solución filtra correctamente los archivos, pero solo funciona con los archivos abiertos en la sesión anterior. Así que necesito reiniciar vim para obtener el búfer actual.

¿Encontraste la solución de trabajo para FZFMru en VIM?


Encontré un último plugin de Junegunn.

Plug ''junegunn/fzf.vim''

Cubre un caso.

Solo agrega

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

Gracias Junegunn :)


Una posible solución es aprovechar el complemento neomru que guardará los archivos neomru más recientemente en un caché ubicado en ~/.cache/neomru/file .

Después de instalar el complemento neomru con su administrador de complementos preferido, puede definir una asignación para buscar el archivo de caché, por ejemplo:

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