微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/bash/385811.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐