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>