gpt4 book ai didi

vim - Vim 中 FZF 最新文件的工作解决方案?

转载 作者:行者123 更新时间:2023-12-03 13:25:00 24 4
gpt4 key购买 nike

我在使用 FZF Vim 插件为最近使用的文件找到合适的解决方案时遇到问题。
此插件应具有以下功能:

  • 显示在当前 vim session 中打开的文件(如缓冲区)
  • 过滤文件,如 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
    这个在打开 session 期间有效,但是当我重新启动 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
    此解决方案可正确过滤文件,但仅适用于在先前 session 中打开的文件。所以我需要重新启动 Vim 以获取当前缓冲区。
    你在 Vim 中找到了 FZFMru 的工作解决方案吗?

    最佳答案

    我找到了最新的 Junegunn 插件。

    Plug 'junegunn/fzf.vim'

    它涵盖了一个案例。

    只需添加
    nmap <silent> <leader>m :History<CR>

    谢谢朱古恩 :)

    关于vim - Vim 中 FZF 最新文件的工作解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31679837/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com