VZF中最新文件的工作解决方案?

前端之家收集整理的这篇文章主要介绍了VZF中最新文件的工作解决方案?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在FZF vim插件中找到适合最新文件解决方案有问题.

插件应具有以下功能

>在当前vim会话中打开的显示文件(如缓冲区)
>过滤文件,如NERD_tree,fugitive

我尝试了两个解决方

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

这个在开放会话期间工作,但是当我重新启动vim时,我看不到所有最后打开的文件.

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

解决方案可以正确地过滤文件,但仅适用于上一个会话中打开的文件所以我需要重新启动vim来获取当前的缓冲区.

您是否在VIM中找到FZFMru的工作解决方案?

我发现了一个最新的Junegunn插件.
Plug 'junegunn/fzf.vim'

它涵盖了一个案例.

只是添加

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

谢谢Junegunn

猜你在找的Bash相关文章